我的表单中包含可变数量的自动填充字段,这些字段使用相同的选择列表。根据需要添加和删除这些字段。每当页面上的参数发生变化时,我(尝试)更新所有字段的列表,首先调用unbind()
然后autocomplete()
,并在网址中添加新参数。
$('input.foo').unbind().autocomplete(url?new_param=bar);
问题是unbind()似乎没有解除绑定。当我输入输入字段时,它会触发自动完成事件的整个历史记录。
我也试过flushCache无济于事。
如何清除旧事件?
感谢。
答案 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()上,这意味着输入必须位于表单标记内才能工作。