为什么jquery ui autocomplete会支持这些功能呢?

leo*_*ora 6 jquery jquery-ui autocomplete

jquery UI团队有一个博客,介绍如何替换旧的自动完成,并证明它可以复制所有旧功能和选项.根据我的测试,我不认为他们可以复制:

  1. selectFirst 如果您有远程数据源
  2. 如果您使用multiple:true,请选择selectFirstmustMatch

我看到有关如何从此插件复制一些遗留自动完成选项的问题,并且有一个选定的答案,但它没有解决这些情况.

jquery ui 人有一个在新的自动完成中复制selectFirst的例子,但除非我弄错了,它只适用于本地数据源(不是远程数据源,因为在调用事件之前菜单通常没有填写).

我错过了什么或者这些场景在jquery ui autocomplete中根本不受支持?

jru*_*nas 6

实际上支持这些场景,但您必须扩展ui.autocomplete小部件以实现所需的行为.实现selectFirst功能的快速示例:

$.widget( "ui.autocomplete2", $.ui.autocomplete, {
    _renderMenu: function( ul, items ) {
        var self = this;
        $.each( items, function( index, item ) {
            self._renderItem( ul, item );
        });
        // setTimeout is needed because jQueryUI automaticaly removes
        // active item just after menu rendering
        setTimeout( function(){
            self.menu.activate(
                // fake event object. Needed to avoid jQueryUI error 
                // (unsafe property access)
                {'type':'fake'}, 
                ul.find(':first') );
        }, 1);
    }
});
Run Code Online (Sandbox Code Playgroud)

注意:始终检查新小部件是否仍与新版本的jQuery UI兼容!

更新:示例mustMatch实现可在此处找到:http://jqueryui.com/demos/autocomplete/combobox.html

  • @dziastinux - 为什么他们会让你自己写这些功能? (3认同)