2013-04-08 67 views
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之一,对应于在选择框中的值。

问题是,POST的值被最后一次输入的文本覆盖,因为它们都具有相同的名称。有没有重新命名输入?

+0

herm ...在这种情况下,从javascript创建输入。在选择框中创建一个事件处理程序。然后根据所选的值,将该输入框注入相应的div。 – Zendy 2013-04-08 00:13:24

回答

1

是 - 提交之前,动态删除不需要的div部分。你可以通过使用jQuery的submit()函数回调来实现这一点。例如,要删除元素,可以使用jQuery的remove()函数。使用div ID会更容易,但您也可以使用索引来执行此操作。

+0

没有想到这一点。我喜欢这种方式,因为它对我来说应该是一条线。谢谢! – 2013-04-08 00:12:08

+0

稍后,我需要添加一个'hidden'类型的输入,所以我最终做了'$(“#myform”)。submit(function(){$(“input [type!='hidden']”) .filter(“:hidden”)。remove();});' – 2013-04-08 00:23:52

0

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

例如,这样的事情可能工作:

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

所以,选择所有名为“信息”有显示输入:none和删除它们。

0

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

+0

nope,只是要使用JavaScript作为@jn_pdx指出 – 2013-04-08 00:22:17