11

我有一个带有可变数量的自动完成字段的表单,这些字段使用相同的选择列表。根据需要添加和删除这些字段。每当页面上的参数发生更改时,我(尝试)通过首先调用unbind()然后autocomplete()将新参数添加到 url 来更新所有字段的列表。

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

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

我也试过flushCache无济于事。

如何清除旧事件?

谢谢。

4

6 回答 6

5
$(target).autocomplete("destroy");
于 2012-04-14T06:14:50.060 回答
3

尝试这个

$ ('input.foo').unbind('.autocomplete').autocomplete ('url?new_param=bar') ;
于 2009-11-10T14:08:49.900 回答
2

自动完成插件添加了一个名为 unautocomplete() 的函数来从拥有它的字段中删除 autocomplete() ,因此如果将代码更改为它应该可以工作:

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

这个 unautocomplete() 函数应该删除所有旧事件。

于 2009-10-18T11:25:49.777 回答
2

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

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

于 2010-06-11T11:20:43.683 回答
1

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

于 2010-11-09T16:19:07.777 回答
0

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

于 2010-02-12T15:38:26.940 回答