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