0

この投稿は前の投稿のフォローアップです。アプリケーションはjQuery1.4で実行されていますが、どのバージョンからのアドバイスも歓迎します。

現在の問題は使用さえです

rowTemplate = j('.form-denomination:first-child').clone();

var newRow = rowTemplate.clone().attr('id', newRowId);

newRowWebページから何を選択しても、firebugを使用してリストの最初の子に古いデータが保持されていることがわかります。

たとえば、複製されるリストの最初の子がnode[0]である場合

<select id="_denominations[0].id.denominationId" class="removableDenom" name="denominations[0].id.denominationId">
    <option value="100">100</option>
    <option value="1000">1000</option>
    <option value="10000">10000</option>
    <option value="500">500</option>
    <option value="5000">5000</option>
    <option value="50000" selected="selected">50000</option>
</select>

そして、node [2]の後に新しい行を追加すると、次のようになります。

<select id="_denominations[3].id.denominationId" class="removableDenom" name="denominations[3].id.denominationId">
    <option value="100">100</option>
    <option value="1000">1000</option>
    <option value="10000">10000</option>
    <option value="500">500</option>
    <option value="5000">5000</option>
    <option value="50000" selected="selected">50000</option>
</select>

ドロップダウンボックスの選択として50000が表示されていることを確認してください。ウェブページに100が表示されていても、何が起こっているのでしょうか。

4

2 に答える 2

3

ドロップダウンボックスの選択として50000が表示されますが、Webページに100が表示されます。

表示されるのはHTMLソースです。50000は、ページに表示されている現在の値ではありませんが、ページが読み込まれたときに表示される(またはこの場合は表示される)値です。

于 2013-03-22T17:40:59.587 に答える
1

あなたは.clone()それが与えることができる以上のものを求めています、私は恐れています。IDは更新されません。名前は更新されません。フォームデータは消去されません。これらすべてのことを自分で行う必要があります。テンプレートでクリアできるフォームデータですが、挿入を行うときに設定する必要があるIDです。

rowTemplate = j('.form-denomination:first-child').clone();
rowTemplate.find("input[value], textarea").val("");
rowTemplate.find("select").each(function() { this.selectedIndex = 0; });

最初の行に常にのようなIDと名前があると想定できる場合、[0]挿入前の更新は少し簡単になります。

var rowId = "[" + j('.form-denomination').length + "]";
var newRow = rowTemplate.clone();
newRow.find("[id]").each(function() { var $t = $(this); $t.attr("id", $t.attr("id").replace("[0]", rowId)); });
newRow.find("[name]").each(function() { var $t = $(this); $t.attr("name", $t.attr("name").replace("[0]", rowId)); });
于 2013-03-22T17:45:50.183 に答える