いくつかの非表示フィールドを選択して、それらをループしたいと考えています。フィールドは次のようになります。
<form method="post" action="" id="uitjes">
<input type="hidden" value="3" name="form-0-Workshops">
<input type="hidden" value="ochtend" name="form-0-Dagdeel">
<input type="hidden" value="1" name="form-0-Aantal">
<input type="hidden" value="1" name="form-0-Workshops">
<input type="hidden" value="middag" name="form-0-Dagdeel">
<input type="hidden" value="1" name="form-0-Aantal">
<input type="hidden" value="2" name="form-0-Workshops">
<input type="hidden" value="middag" name="form-0-Dagdeel">
<input type="hidden" value="1" name="form-0-Aantal">
</form>
私は次のようにそれらを選択します:
var form = $("#uitjes");
form.find('input[name$="Workshops"]').each(rename);
form.find('input[name$="Dagdeel"]').each(rename);
form.find('input[name$="Aantal"]').each(rename);
この場合、ワークショップの選択には 3 つの要素が含まれます
[input 1, input 1, input 3]
。
問題は、すべての次の要素がもう 1 つの要素 (4) をカウントすることです:
[input#id_form-0-Dagdeel, input ochtend, input middag, input middag]
.
したがって、私のループは期待どおりに機能しません。
最初の要素の選択は、推奨される動作です。最初の選択が次の選択と異なる理由がわかりません。
私がやっている理由は、フィールドの名前を変更して、次のような出力を取得することです。
<form method="post" action="" id="workshops">
<input type="hidden" value="3" name="form-0-Workshops">
<input type="hidden" value="ochtend" name="form-0-Dagdeel">
<input type="hidden" value="1" name="form-0-Aantal">
<input type="hidden" value="1" name="form-1-Workshops">
<input type="hidden" value="middag" name="form-1-Dagdeel">
<input type="hidden" value="1" name="form-1-Aantal">
<input type="hidden" value="2" name="form-2-Workshops">
<input type="hidden" value="middag" name="form-2-Dagdeel">
<input type="hidden" value="1" name="form-2-Aantal">
したがって、この関数を呼び出します (@epascarello に感謝):
function rename (i) {
var parts = this.name.split("-");
parts[1] = i;
this.name = parts.join("-");
}