jQuery自动完成“响应”事件

时间:2012-10-08 20:15:04

标签: jquery jquery-ui jquery-autocomplete

我正在使用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!');
                } 
        })    
    }); 

非常感谢任何建议!

2 个答案:

答案 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"}
  );
}

这将为每个列表添加“其他”选项,其输入值为“选项”。