现在,如果我像这样初始化我的组件:
$('#foo').autocomplete({
delay: 0,
minLength: 1,
source: self.loadUsers.bind(self),
select: function(event, ui) {
$(this).autocomplete('widget').hide();
var selected = ui.item;
var element = selected.element;
// more stuff here
},
focus: function() { return false; },
open: function() { console.log('Opening menu...'); }
})
每次更改#foo中的文本时,它都会执行搜索(并正确调用loadUsers
)。 focus
和open
事件将正常工作。
我想避免的是,实际上,避免以这种方式触发搜索。我想只在按下(或释放,更好)ENTER(keyCode 13)时执行搜索。现在两个部分都在工作:按Enter键时执行搜索,这是由事件处理程序完成的一个键盘:
function(event) {
if (event.keyCode === 13) {
var input = $("#foo"); // perhaps $(this) could do the job?
input.autocomplete('search');
}
}
但是我想从常规击键/文字更改中移除搜索调用。我试着打电话给.off('keyup keydown keypress change')
,但不管怎么说它都不起作用:每当我输入文本框时,都会出现建议。
ALSO 指定disabled: true
作为选项不起作用,因为当我这样做时,即使只在我按下ENTER时调用搜索方法(这是预期的功能)和正确检索元素列表... UI列表未填充结果也未显示。
如何使这个工作?
答案 0 :(得分:0)
为未来的读者找到它:
你有一个autocompletesearch事件,你可以在初始化时用这样处理(或者用'on'绑定到'autocompletesearch'事件):
search: function(event) {
if (event.originalEvent) {
// comes from an AUTOMATIC (orevent-triggered) .search,
// instead of coming from the manual call to .autocomplete('search').
// so we must ban it.
return false;
}
},
当调用.autocomplete('search'[, someValueHere])
或在输入组件上触发标准事件(keydown,input)时,会触发此类事件。在后一种情况下,event
处理程序中的autocompletesearch
(1st)参数将是具有字段.originalEvent
的事件,而在前一种情况下(手动调用搜索方法),事件不会有这样的领域。
因此,当存在此类字段时,您可以返回false。