【发布时间】:2011-10-03 23:54:50
【问题描述】:
我正在尝试让 jQueryUI AutoComplete 触发动态创建的表单输入元素,但它不起作用。我尝试在 $.live() 中使用 keyup.autocomplete 和 keydown.autocomplete 作为绑定事件,但它绑定到新元素 - 只有页面上已经存在的元素。
试用代码here(尝试在第一个输入中输入“ava”,然后单击“添加输入”并在新输入中输入相同的内容)。
JavaScript:
$(function() {
$("input#addButton").click(function() {
$("input.searchInput:last").clone(true).appendTo($(this).closest("form"));
$("input.searchInput:last").val("");
})
$("input.searchInput").live("keydown.autocomplete", function() {
$(this).autocomplete({
source: [
"ActionScript",
"AppleScript",
"Asp",
"BASIC",
"C",
"C++",
"Clojure",
"COBOL",
"ColdFusion",
"Erlang",
"Fortran",
"Groovy",
"Haskell",
"Java",
"JavaScript",
"Lisp",
"Perl",
"PHP",
"Python",
"Ruby",
"Scala",
"Scheme"
],
minLength: 2
});
})
});
HTML:
<form name="myForm" method="post">
<input id="addButton" name="addButton" type="button" value="Add an input" />
<input name="search" value="" class="searchInput" maxlength="20" />
</form>
【问题讨论】:
-
只是出于好奇,您是否尝试过在每次为创建的特定对象创建控件时执行绑定?故障排除的良好起点...
-
@Dutchie432:是的,我做到了 - jsfiddle.net/6t74T/2 - 结果相同。
-
@Eric:你的小提琴 (jsfiddle.net/6t74T/1) 在 Chrome 中对我有用。我也可以在添加的框上自动完成。
-
@MrChief:你说得对……它也适用于 IE8。嗯 一定是IE9的问题....
-
只有在创建新输入后重置绑定时才能在 IE8 中工作 - jsfiddle.net/6t74T/2。 jsfiddle 有效,但不是我的实际代码...
标签: jquery jquery-ui autocomplete jquery-ui-autocomplete