我的表格有点像这样:
<form action="#" method="post">
<select name="phase">
<option>1</option>
<option>2</option>
<option>3</option>
</select>
<div data-phase="1">
<input type="text" name="info" />
</div>
<div data-phase="2">
<input type="text" name="info" />
</div>
<div data-phase="3">
<input type="text" name="info" />
</div>
</form>
通过使用JQuery,在任何时候,只显示一个DIV,对应于选择框中的值。
问题是POSTed的值被最后一个文本输入覆盖,因为它们都具有相同的名称。是不是在没有重命名输入?
答案 0 :(得分:1)
是 - 在提交之前,动态删除不需要的div
部分。您可以通过使用jQuery的submit()
函数回调来实现此目的。
要删除元素,您可以使用jQuery的remove()
函数。使用div
ID会更容易,但您也可以使用索引来执行此操作。
答案 1 :(得分:0)
您可以在提交表单之前使用javascript动态重命名输入。或者您甚至可以在提交之前从DOM中删除禁用的输入。
例如,这样的事情可能有效:
$(input[name="info"]).filter(function() {
return $(this).css('display') == "none";
}).remove();
因此,选择名为“info”的所有输入,其中包含display:none并将其删除。
答案 2 :(得分:0)
我很遗憾地说:你必须重命名每个div的名字。这样的事情 name =“info1”name =“info2”name =“info3” 在处理无线电输入类型时,只对name属性使用相同的名称。