2012-10-16 68 views
2

我想動態添加行,所有行都必須具有唯一的ID,並自動在此處建議我的代碼。不幸的是它不工作。自動完成功能無法在動態創建的行上工作

我有以下結果

  1. 動態添加行。
  2. 動態添加所有測試框的Autosuggest。
  3. 所有動態添加元素的唯一ID。

    $(document).ready(function() 
    { 
    var currentItem = 1; 
    
    $('#itemCode_1').autocomplete({ 
    source: 'data/item-data.php', 
    minLength: 1, 
    select: function(event, ui) { 
        var $itemrow = $(this).closest('tr'); 
    
          $itemrow.find('#itemCode_1').val(ui.item.itemCode); 
          $itemrow.find('#itemDesc_1').val(ui.item.itemDesc); 
          $itemrow.find('#itemPrice_1').val(ui.item.itemPrice); 
    
    
          $('#itemQty_1').focus(); 
    
        return false; 
    } 
    
    }).data("autocomplete")._renderItem = function(ul, item) { 
    return $("<li></li>") 
        .data("item.autocomplete", item) 
        .append("<a>" + item.itemCode + " - " + item.itemDesc + "</a>") 
        .appendTo(ul); 
    }; 
    
    
    
    $('#addRow').click(function(){ 
        currentItem++; 
        var strToAdd = '<tr class="item-row"><td></td><td><input name="itemCode[]" value="" class="tInput" id="itemCode_'+currentItem+'" tabindex="1"/> </td><td><input name="itemDesc[]" value="" class="tInput" id="itemDesc_'+currentItem+'" readonly="readonly" /></td><td><input name="itemQty[]" value="" class="tInput" id="itemQty_'+currentItem+'" onChange="calc('+currentItem+')" tabindex="2"/></td><td><input name="itemPrice[]" value="" class="tInput" id="itemPrice_'+currentItem+'" onChange="calc('+currentItem+')"/> </td><td> <input type="text" name="sub_total" id="sub_total_'+currentItem+'"></td></tr>'; 
    
        $('#itemsTable').append(strToAdd); 
    
    
    
    }); 
    var bindfield=$('itemCode_'+currentItem+''); 
        var itemdes=$('#itemDesc_'+currentItem+''); 
        var itempr=$('#itemPrice_'+currentItem+''); 
        var itemqty=$('#itemQty_'+currentItem+''); 
    bindfield.each(function(){ 
        $(this).autocomplete({ 
        source: 'data/item-data.php', 
        minLength: 1, 
        select: function(event, ui) {    
         var $itemrow = $(this).closest('tr'); 
    
          $itemrow.find(bindfield).val(ui.item.itemCode); 
          $itemrow.find(itemdes).val(ui.item.itemDesc); 
          $itemrow.find(itempr).val(ui.item.itemPrice); 
    
    
          $(itemqty).focus(); 
    
        return false; 
        } 
    }); 
        }) 
    $('#itemCode').focus(function(){ 
    window.onbeforeunload = function(){ return "You haven't saved your data. Are you sure you want to leave this page without saving first?"; }; 
    }); 
    
    }); 
    
+0

不工作意味着它如何工作expalin的詳細信息 –

+0

我能夠添加動態行和第一行自動完成工作正常,但我們爲該自動完成動態添加的其他行不起作用 – user1749035

+0

它看起來像你幾乎直的警察ied http://www.codemashups.com/jquerys-autocomplete-using-multiple-inputs-in-same-table/並試圖做,除了添加唯一的ID之外,不確定它是什麼?我看到你已經添加了一個函數來執行'calc',但是不要給我們這個函數來處理。我會建議使用JSFiddle來創建一個JSFiddle,所以我們可能會看到你擁有的所有東西 - 儘管更改爲JSFiddle的本地源代碼。 – Jon

回答

1

你可以給的,而不是給ID,通過提供這樣的自動完成功能應用於所有具有指定類name..In代碼上面你可以給元素的類名

$('.ClassName).autocomplete({});

代替

$( '#itemCode_1')自動完成({})。

爲下面的代碼給出動態創建的元素的工作。 。

$( 'CLASSNAME ')生活(' keydown.autocomplete',函數(){

 // Write your code to initiate the autocomplete 

});

用於動態創建的元素進行相同的類名... 希望這將工作試試這個...

0
jQuery(document).ready(function($){ 
    var counter =2; 
    var count=2; 
    $("#addmember").click(function() {  
     $('#member').append('<input type="text" name="member' +counter+ '" id="member' + counter + '">'); 
     counter++; 
     jQuery("#member" +count+ "").autocomplete('Your Url', { 
      multiple: false, 
      matchContains: true, 
      width: 180, 
      selectFirst: true, 
     }); 
     jQuery("#member" +count+ "").result(function(event, data, formatted) { 

      count++; 
      } 
     }); 
    }); 
}); 

這是頭部分和體

<input name="member1" id="member1" type="text" /> 
<div id="member"></div> 
+0

感謝您的幫助,但現在我陷入了另一個問題,它的工作通常會動態地添加texbox,但是當我們編輯之前的文本框時,它並不適用於填充值。我的代碼是這樣 jQuery的( 「#構件」 +計數+ 「」).autocomplete( 'get_course_list2.php',{ 多個:假, matchContains:真, 寬度:180, selectFirst:真, }) ; alert(count); alert(data [1]); $((「#member」+ count +「」).result(function(event,data,formatted)var tempcount = counter-1; 「#price」+ count +「」).val(data [1]); count ++;}); – user1749035

+0

感謝您的回覆。請這樣檢查,首先添加3個或更多的文本框,然後改變之前的值,在這種情況下,我們可以獲得自動提示,但是它不能更改我們存儲在商品價格中的值。然後嘗試添加另一個文本框沒有自動暗示再次添加另一個工作流暢。希望我分享它正確如果你不介意我可以得到你的通信電子郵件ID,我的是[email protected] – user1749035

相關問題