我正在使用jQuery UI自动完成,如[http://api.jqueryui.com/autocomplete/]所述
我需要在执行搜索之前和之后做一些事情。通过阅读上述URL中的文档,它描述了在查询运行之前和之后触发的两种方法“搜索”和“响应” - 完美。但是,如果我将这些添加到我的代码中,“搜索”可以完美地工作,但“响应”永远不会被调用。我究竟做错了什么?我的所有代码都有效,没有javascript错误,自动完成功能完美无缺。但我只是没有触发“响应”方法。
$(function() {
$("#tv").autocomplete({
source: "a_url_providing_json",
minLength: 4,
select: function(event, ui) {
$('#state_id').val(ui.item.id);
$('#abbrev').val(ui.item.abbrev);
},
search : function(a,b) {
alert('this works!');
},
response : function(a,b) {
alert('this doesnt!');
}
})
});
非常感谢任何建议!
答案 0 :(得分:10)
这个回调方法使用新的jquery-ui到达。我无法使用此功能,但在我从 1.8.20 更新为 1.9.2 之后,回调会按原样发出。
希望它有所帮助!
答案 1 :(得分:2)
假设您的所有代码都是正确的,您可能需要升级您的jQuery UI版本(以及相应的jQuery)。这是因为虽然您正在查看的文档中说“添加了自动完成小部件版本:1.8”,但直到1.9才会添加响应事件(请参阅jQuery 1.9 Upgrade Guide: Response Event)这也意味着您将无法“绑定自动完成响应事件的事件监听器“作为指南说明。
升级到支持自动完成响应事件的jQuery和jQuery UI版本后,此代码将按预期工作。
作为对此活动的新手的提示,请记住,如果您修改数据,则需要为要添加的每个项目包含值和标签属性,即使您的源数据只是一个数组价值观这是因为一旦内容进入此事件,它就已经被“标准化”(也就是说,标签已被削减了一个值)。
因此,如果要在返回的结果中添加“其他”,您的响应事件将如下所示:
response: function (e, ui) {
ui.content.push(
{label:"Other", value:"Option"}
);
}
这将为每个列表添加“其他”选项,其输入值为“选项”。