2011-07-23 32 views
1

有没有一些方法可以告诉jQuery UI自动完成从不搜索?我想可以设置minLength真的很高,但是有一个合适的方法可以做到吗?jQuery UI自动完成:永远不会弹出?

如果您想知道,我会用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); 
     } 
    }) 
} 

回答

1

设置minLength到任何你想要的(可能是0,因为你手动触发)。然后,

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

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

禁用它似乎取消搜索,即使点击。 – mpen

+0

您是如何在点击时激活自动填充功能的? –

+0

请参阅更新。 – mpen

1

search回调把这个似乎做主要是我想:

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

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