【问题标题】:jQuery autocomplete doesn't work...jQuery自动完成不起作用...
【发布时间】: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


【解决方案1】:
<id='a' value='Smith' autocomplete='off'>

这不是有效元素,它缺少标签名称。要修改“input”吗?

$('a')…

这会选择页面中的所有锚元素(链接)。我猜你想要 id 选择器$('#a')

此外,您应该真正将两个脚本元素合二为一。不仅因为某些浏览器存在限制。一个&lt;script&gt; 可能包含多个JavaScript 语句,而您可能只想chain the two methods 相同的选定元素。

【讨论】:

    猜你喜欢
    • 2012-11-02
    • 1970-01-01
    • 2015-06-08
    • 2014-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多