8

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

非常感谢您的任何建议!

4

2 回答 2

10

这个回调方法与新的 jquery-ui 一起出现。我无法让它工作,但在我从1.8.20更新到1.9.2之后,回调会按预期触发。

希望能帮助到你!

于 2012-11-26T10:28:27.407 回答
2

假设您的所有代码都是正确的,您可能需要升级您的 jQuery UI 版本(以及相应的 jQuery)。这是因为尽管您正在查看的文档显示“添加了自动完成小部件版本:1.8”,但响应事件直到 1.9 才添加(请参阅jQuery 1.9 升级指南:响应事件)这也意味着您将无法“如指南所述,将事件侦听器绑定到 autocompleteresponse 事件”。

升级到支持自动完成响应事件的 jQuery 和 jQuery UI 版本后,此代码将按预期工作。

作为给刚接触此事件的任何人的提示,请记住,如果您修改数据,则需要为要添加的每个项目包括 value 和 label 属性,即使您的源数据只是一个值数组。这是因为一旦内容进入这个事件,它就已经被“规范化”了(也就是说,标签已经被分配了一个值)。

因此,如果您想在返回的结果中添加“其他”,您的响应事件将如下所示:

response: function (e, ui) {
  ui.content.push(
    {label:"Other", value:"Option"}
  );
}

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

于 2013-03-13T16:14:49.963 回答