2010-08-27 2 views
1

Я работаю с подключаемым модулем автозаполнения пользовательского интерфейса jQuery для своего веб-приложения.
Он отлично работает для моих существующих строк, но не работает для моих динамически добавленных строк.jquery Autocomplete на динамически добавленных строках

Вот мой код jquery.

$(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 Я пытаюсь вставить

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(); 

Как бы убедиться, что автозаполнение функция работает и для моих новых добавленных строк?

+0

Любые идеи, как это сделать? – Pritish

ответ

1

Я вижу пару вещей, которые могут быть неправильными.

Во-первых, когда вы добавляете новую строку, вы указываете имя входа «newContactName», но при поиске() вы ищете «name = 'newContact».

Кроме того, при вызове автозаполнения() по результатам поиска() вам необходимо указать параметр источника. Поскольку у вас есть источник, установленный для функции в ваших нединамических строках, вы, вероятно, захотите разбить это на именованную функцию и использовать именованную функцию как источник в обоих вызовах autocomplete().

Надеюсь, это поможет ...