jQuery自动完成:如何刷新列表?

时间:2009-10-17 00:42:17

标签: jquery binding jquery-autocomplete

我的表单中包含可变数量的自动填充字段,这些字段使用相同的选择列表。根据需要添加和删除这些字段。每当页面上的参数发生变化时,我(尝试)更新所有字段的列表,首先调用unbind()然后autocomplete(),并在网址中添加新参数。

$('input.foo').unbind().autocomplete(url?new_param=bar);

问题是unbind()似乎没有解除绑定。当我输入输入字段时,它会触发自动完成事件的整个历史记录。

我也试过flushCache无济于事。

如何清除旧事件?

感谢。

6 个答案:

答案 0 :(得分:5)

$(target).autocomplete("destroy");

答案 1 :(得分:3)

试试这个

$ ('input.foo').unbind('.autocomplete').autocomplete ('url?new_param=bar') ;

答案 2 :(得分:2)

autocomplete插件添加了一个名为unautocomplete()的函数,用于从包含它的字段中删除autocomplete(),因此如果将代码更改为:

$('input.foo').unautocomplete().autocomplete('url?new_param=bar');

此unautocomplete()函数应删除所有旧事件。

答案 3 :(得分:2)

jQuery提供了flushCache()方法(http://docs.jquery.com/Plugins/Autocomplete)来删除已经通过自动完成匹配的内容。

例如,如果使用的html元素为<input type="text" id="txtElement"/>,则自动完成与之关联。 flushCache可以如下给出:$("#txtElement").flushCache();这将解决问题。

答案 4 :(得分:1)

如果您正在使用选项,请添加cacheLength并将其设置为1.此设置不会存储任何返回的记录。相信我,它让我的生活变得更好......整整5分钟。

答案 5 :(得分:0)

我认为您的问题是您没有包含自动填充输入字段的表单。如果查看jquery.autocomplete.js的代码,它会执行$(input.form).unbind(“。autocomplete”);在unautocomplete()上,这意味着输入必须位于表单标记内才能工作。