0

我有一个有点像这样的表格:

<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 的值被最后一个文本输入覆盖,因为它们都具有相同的名称。在不重命名输入的情况下是否存在这种情况?

4

3 回答 3

1

是的——在提交之前,动态删除不需要的div部分。您可以通过使用 jQuery 的submit()函数回调来实现这一点。

例如,要删除元素,您可以使用 jQuery 的remove()函数。使用 id 会更容易div,但您也可以使用索引来做到这一点。

于 2013-04-08T00:10:19.613 回答
0

您可以在提交表单之前使用 javascript 动态重命名输入。或者您甚至可以在提交之前从 DOM 中删除禁用的输入。

例如,这样的事情可能会起作用:

$(input[name="info"]).filter(function() {
    return $(this).css('display') == "none";
}).remove();

因此,选择所有具有 display: none 的名为“info”的输入并删除它们。

于 2013-04-08T00:11:01.827 回答
0

我很抱歉这么说:您必须重命名每个 div 的名称。像这样的 name="info1" name="info2" name="info3" 在处理无线电输入类型时,您只对 name 属性使用相同的名称。

于 2013-04-08T00:18:22.483 回答