2012-09-09 59 views
0

我已經實現的JQuery克隆如在下面的鏈接:填充形式從JSON陣列字段與jQuery克隆

http://jsfiddle.net/sunalive/gqQnJ/13/

相同的事務用於張貼和顯示值。我需要顯示來自JSON數組的值(使用來自DB的PHP構建),它具有多行的值。 JSON數組樣品是如下:

[{"lineNo":"000001","txtLink":"sddf","txtSelect":"2","txtCheck":"X"}, 
    {"lineNo":"000002","txtLink":"sdfd","txtSelect":"4","txtCheck":""}, 
    {"lineNo":"000003","txtLink":"frf","txtSelect":"5","txtCheck":"X"}] 

當顯示是相同的,所述行具有克隆(以行數),並在相應的字段中顯示的值。我不知道字段的名稱或JSON數組中的內容,因爲所有內容都是在運行時動態生成的。但是,字段名稱的形式爲item ['fieldname'] [](在克隆的行中),其中fieldname = key在JSON數組中。

我能夠成功地克隆行,如下面的itemarr持有JSON數組。

$(itemarr).each(function(index){ 
    $('.gridcontainer').append(emptyItems.clone()); 

    } 

但我不知道如何將值顯示到帶有動態克隆的表單字段中。

任何人都可以幫助我實現這個目標嗎?感謝您的時間和幫助。

更新:(!感謝亞士圖)我找到了我的解決方案,同樣是在以下鏈接可供選擇:

http://jsfiddle.net/gqQnJ/27/

回答

1
<table id="grid"> 
    <tr id="emptyItems" style="display:none"> 
     <td><input type="text" name="item['a'][]" /></td> 
     <td><input type="text" name="item['b'][]" /></td> 
     <td><input type="text" name="item['c'][]" /></td> 
    </tr> 
</table> 

var rows = [ 
    { "a": 1.1, "b": 1.2, "c": 1.3 }, 
    { "a": 2.1, "b": 2.2, "c": 2.3 }, 
    { "a": 3.1, "b": 3.2, "c": 3.3 } 
]; 

$(function() { 
    $.each(rows, function(i, row) { 
     var newRow = $("#emptyItems").clone().show().appendTo("#grid"), 
      inputs = newRow.find("input"); 

     inputs.each(function() { 
      var name = /item\['([^'])'\].*/.exec(this.name)[1]; 
      this.value = row[name] || ""; 
     }); 
    }); 
}); 

Example

+0

謝謝安德烈亞斯。我今天會試試這個。 – Ravi

+0

嗨安德烈亞斯,我今天嘗試了你的解決方案。它似乎孤立地工作,但是,當我把它放在我的實現中時,它沒有按預期工作。我的實現可以在這個小提琴找到[http://jsfiddle.net/gqQnJ/16/](http://jsfiddle.net/gqQnJ/16/)。你能看到哪裏出錯了嗎?再次感謝你的幫助。 – Ravi

+0

1.項目名稱與提供問題2的項目名稱不同。您必須在數組中的每個項目的第一行而不是第一個「.each()」之前使用'.clone()'3.您的修改後的正則表達式版本不適合「新」項目名稱4. html標記無效5.從.1版本開始,.live()不推薦使用。 - 編輯和工作(和剝離)[小提琴] (http://jsfiddle.net/gqQnJ/17/) – Andreas