0

次のリンクのように JQuery Clone を実装しました。

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'][]という表記になります。ここで、フィールド名は JSON 配列のキーです。

itemarr が JSON 配列を保持する以下のように、行を正常に複製できました。

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

  }

しかし、動的クローンを使用してフォーム フィールドに値を表示する方法がわかりません。

誰でもこれを達成するのを手伝ってもらえますか? お時間をいただきありがとうございます。

更新:私は解決策を見つけました (Andreas に感謝します!)。同じことが次のリンクから入手できます。

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

4

1 に答える 1

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] || "";
        });
    });
});

于 2012-09-09T17:40:41.850 に答える