0

いくつかの非表示フィールドを選択して、それらをループしたいと考えています。フィールドは次のようになります。

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

0 に答える 0