我想选择一些隐藏字段并遍历它们。这些字段如下所示:
<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("-");
}