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].

问题是所有接下来的元素都会多计算一个元素 (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