2013-04-08 70 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