我对此感到很沮丧,并且尝试了尽可能多的不同迭代,希望能对此有所帮助。我有一个动态表,该表具有一个添加行的按钮,但是我无法使自动完成功能在第一行之后起作用。对我做错了什么建议吗?
这是我的代码:
var roomNames = [
"Balcony",
"Kitchen",
"Bedroom 1"
];
$( "#room-list" ).autocomplete({
source: roomNames
});
var Rcounter = 1;
$("#addrow").on("click", function () {
var rowCount = $('#myTable >tbody >tr').length;
if (rowCount < 24) {
var $newRow = $("<tr>");
var cols = "";
Rcounter++;
cols += '<td><input type="text" id="room-list" name="room' + Rcounter +'"></td>';
$newRow.append(cols);
$newRow.appendTo("table#myTable").autocomplete(roomNames);
}
});
谢谢您的帮助。
答案 0 :(得分:2)
您正在将autocomplete
添加到表行。您需要将其添加到input
中。同样,您需要像为source
一样设置room-list
来自动完成。现在,您只传递数组。
因此,应该可以解决此问题(您也可以单独创建输入元素,而不使用find
):
$newRow.find("input").autocomplete({ source: roomNames });
另一种解决方案是根据选择器将其设置为表,而不是将其设置为每个输入。 (这将在点击事件之外)
例如
$("#myTable").on('keydown.autocomplete', "input", function() {
$(this).autocomplete({
source: roomNames
});
});