我正在编写一个围绕jQuery自动完成的可重用包装器,由于某些原因我无法使select
回调起作用。
根据下面的代码,永远不会调用select()函数。我搞砸了什么?对于如何使用jQuery自动完成小部件指定select
回调,是否存在一些隐藏的约束?
注意:这只是半写的。只是想让select
正常工作。
// Note: 'input' is a jQuery object.
name.space.ThingSuggest = function(input) {
this.input = input;
// Set up an autocomplete widget on the given input form.
this.input.autocomplete({
source: name.space.ThingSuggest.SOURCE_URL,
delay: 500,
select: this.select.bind(this)
});
this.input.autocomplete('instance')._renderItem = name.space.ThingSuggest.renderItem;
};
name.space.ThingSuggest.SOURCE_URL = // some URL
name.space.ThingSuggest.prototype.select = function(event, ui) {
this.input.val(ui.item.label);
return false;
};
name.space.ThingSuggest.renderItem = function(ul, item) {
return $('<li>', { value: item.value })
.append(item.label + ' <span>@' + item.username + '</span>')
.appendTo(ul);
};
要清除 ,自动完成和_renderItem
正在按预期工作。只有suggest
回调没有触发。
我一直盯着这种方式太久了......所以我知道这是一个愚蠢的不匹配的支撑物。
提前致谢!
答案 0 :(得分:0)
我混淆了select
和focus
事件。因为我真的很蠢。
select
确实可以在上面的代码示例中使用,但我没有触发它,因为我只是在列表中移动焦点,而不是实际点击/选择一个条目。
我真正想做的事情 - 在列表项焦点更改上使用回调 - 需要使用focus
回调。
答案 1 :(得分:0)
我不知道该在哪里发布, 它可能与帖子无关,但是我想引起您的注意,我使用的是错误版本的jquery autocomplete,不是jquery ui,而是npm软件包中与jquery ui无关的版本,因此,如果您未触发“ select”事件,请尝试从jquery网站ui下载版本。