动态添加行上的jQuery自动完成 [英] jquery Autocomplete on dynamically added rows
问题描述
我正在为我的Web应用程序使用jQuery UI自动完成插件.
对于我现有的行,它工作得很好,但是对于动态添加的行,它却不能正常工作.
I'm working with jQuery UI autocomplete plug-in for my web application.
It works perfectly fine for my existing rows, but doesn't quite work for my dynamically added rows.
这是我的jquery代码.
Here's my jquery code.
$(function ()
{
var tab = $("#tabs-6");
tab.find("input[name='newContactName']").autocomplete(
{
source: function(request, response) {
var cachedRequest = $(this).data("cachedRequest");
// Previous data is cached, so new data is a subset of this
if (cachedRequest != null &&
cachedRequest.length > 0 &&
request.term.indexOf(cachedRequest) >= 0)
{
..some code..
}
else
{
var input = $(this);
$.ajax({
..some code..
success: function(data)
{..some code..
}
});
}
},
minLength: 3,
delay: 500
}
);
tab.find("input[name='newContactName']").bind('autocompleteselect', function(event, ui) {
$(this).prev("input[name='newContactId']").val(ui.item.person_id);
});
/* Customizing the autocomplete suggestions box that pops up.
*/
var input1=$("input[name='newContactName']");
input1.each(function (){
$(this).autocomplete("widget").css("height", "10em");
$(this).autocomplete("widget").css("overflow", "auto");
$(this).autocomplete("widget").css("width", "210px");
});
});
这是现有行的自动完成插件的jQuery代码,对于新添加的行,这是我要插入的html
This is the jQuery code for the autocomplete plugin for the existing rows, and for the newly added rows, this is the html I'm trying to insert
var html = '<tr>..first 8 td elements.. <td><input type="text" name="newContactName"> </td>'+
..some more td elements</tr>';
var newRow = $(html).insertAfter(row); // insert content,where row is my current row
newRow.find("td:nth-child(9) input[name='newContact']").autocomplete();
我如何确保自动完成功能也适用于我新添加的行?
How would I make sure that the autocomplete feature works for my newly added rows as well?
推荐答案
我看到了一些可能不对的地方.
I see a couple of things that might be wrong.
首先,当您添加新行时,将输入的名称设置为"newContactName",但是当您找到find()时,将查找"name ='newContact'".
First, when you add a new row, you set the input's name to "newContactName", yet when you find() you look for "name='newContact'".
此外,在对find()的结果调用autocomplete()时,您需要指定source选项.由于您已在非动态行中将源设置为一个函数,因此您可能希望将其分解为一个命名函数,并在两个autocomplete()调用中都使用该命名函数作为源.
Also, when calling the autocomplete() on the results of find(), you'll need to specify the source option. Since you had source set to a function in your non-dynamic rows, you'll probably want to break that out to a named function and use the named function as the source in both autocomplete() calls.
希望这对您有帮助...
Hope this helps...
这篇关于动态添加行上的jQuery自动完成的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!