【发布时间】:2011-01-05 08:28:44
【问题描述】:
我正在使用 jQuery 的自动完成功能,但遇到了一个小问题。我有一个 div 元素,其中包含一些文本和可变数量的具有自动完成功能的输入框。当用户单击div 元素中的文本时,输入框将被移除。单击文本在显示输入框和不显示输入框之间切换。每单击一个文本,就会调用一个 php 脚本,该脚本会为 div 元素返回新的 html 文本。
自动完成输入是使用类似于以下的 php 代码创建的:
php代码
echo "<id='a' value='Smith' autocomplete='off'>";
echo "<script type=\"text/javascript\">$('a').autocomplete('do_name_lookup.php',{minChars:3,max:999});</script>";
echo "<script type=\"text/javascript\">$('a').result(function(event, data, formatted) {alert(data[0])});</script>";
在静态网页上,两个script 元素将出现在“$(document).ready”函数中。然而,由于我的页面是动态的,所以输入框是在$(document).ready 触发后很长时间才创建的。因此,我必须在每个输入框完成后执行 javascript 代码。此设置在第一次执行上述 php 代码时工作正常,但第二次执行代码时,自动完成功能消失了。
谁能向我解释为什么会发生这种情况以及如何解决它?我的怀疑是我多次声明一个具有相同名称的变量,这会造成某种类型的冲突。
【问题讨论】:
-
我已经进一步细化了我遇到的问题。当我从页面中动态删除元素(例如,包含自动完成输入项的表格行)时,会出现问题(自动完成停止工作)。
-
你引用的那个php是怎么调用的?一些ajax方法?
-
更新:问题与具有相同名称的多个选择器/元素有关。我通过在选择器名称的末尾添加一个随机数来解决这个问题。这使得每个选择器都是独一无二的,并且自动完成功能再次变得愉快。
标签: javascript jquery autocomplete