jQuery UI自动完成:永远不会弹出?

时间:2011-07-23 20:42:06

标签: jquery jquery-ui jquery-ui-autocomplete

有什么方法可以告诉jQuery UI Autocomplete从不搜索?我可以设置minLength非常高,但是有一个正确的方法可以做到这一点吗?

如果你想知道,我会用onclick事件手动触发它。


我如何添加onclick处理程序:

if(settings.showOnClick) {
    $(this).bind('click.ajaxselect', function(e) {
        if(!$(this).data('focusHandled') && !$(this).autocomplete('widget').is(':visible')) {
            $(this).autocomplete('search','');
            $(this).data('focusHandled',true);
        } else {
            $(this).data('focusHandled',false);
        }
    }).bind('focus.ajaxselect', function(e) {
        if(!$(this).data('focusHandled') && e.hasOwnProperty('originalEvent') && $(this).val() === this.defaultValue && !$(this).autocomplete('widget').is(':visible')) {
            $(this).autocomplete('search','');
            $(this).data('focusHandled',true);
        } else {
            $(this).data('focusHandled',false);
        }
    })
}

2 个答案:

答案 0 :(得分:1)

minLength设置为您想要的任何内容(自手动触发后可能为0)。然后,

$( ".selector" ).autocomplete({
    select: function(event, ui) { 
        ... // do your thing
        $( ".selector" ).autocomplete("disable");
    }
});

$( ".clicker" ).click(function() {
    ... // do your thing
    $( ".selector" ).autocomplete("enable");
});

答案 1 :(得分:1)

将这个放在search回调中似乎主要是我想做的事情:

search: function(e, ui) {
    if(settings.minLength < 0 && e.hasOwnProperty('originalEvent')) return false;
    // other code
    return true;
},

然后,如果我将minLength设置为小于0,则键入事件不会触发搜索,但我的手动点击事件仍然会。不过,焦点事件似乎也被取消了。试图确定我是否对这种行为感到高兴。