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

时间:2011-02-20 15:31:01

标签: jquery jquery-ui autocomplete

jquery UI团队有一个blog on how to replace the legacy autocomplete and justifies that it can replicate all of the old features and options。根据我的测试,我不认为他们可以复制:

  1. selectFirst 如果您有远程数据源
  2. selectFirst mustMatch 如果您使用的是倍数:true
  3. 我看到this questions on how to replicate some of the legacy autocomplete中的this plugin个选项,并且有一个选定的答案,但它没有解决这些问题。

    jquery ui folks have an example of replicating selectFirst in the new autocomplete,但除非我弄错了,否则它只适用于本地数据源(不是远程数据源,因为在调用事件之前菜单通常没有填写)。

    我是否遗漏了某些内容,或者这些场景在jquery ui autocomplete中根本不受支持?

1 个答案:

答案 0 :(得分: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);
    }
});

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

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