2010-06-02 87 views
1

我有以下代碼工作正常,但問題是它總是提交第一個div(文章),即使它是隱藏的。我的問題是如何提交表單中的div和表單中的表單和元素? (如果我選擇音樂的單選按鈕,我要提交的音樂事業部的投入要素不是第DIV。謝謝。如何提交正確的div元素(不是隱藏的div)?

$(document).ready(function(){ 
    $("input[name$='itemlist']").click(function() { 
     var selection = $(this).val(); 
     $("div.box").hide(); 
     $("#"+selection).show(); 
    }); 
}); 

<!--radio buttons--> 
<div id="articleselection"><input name="itemlist" type="radio" value="article" /> Article/Book </div> 
<div id="musicselection"><input name="itemlist" type="radio" value="music" /> Music</div> 


<!--article div starts--> 
<div id="article" class="box"> 
<table class="fieldgroup"> 
<tr><td>Journal Title: <input id="JournalTitle" name="JournalTitle" type="text" size="60" class="f-name" tabindex="1" value="JournalTitle"> 
</table> 

<table class="fieldgroup"> 
<tr><td>Article Author: <input id="ArticleAuthor" name="ArticleAuthor" type="text" size="40" class="f-name" tabindex="2" value="<"ArticleAuthor"></td></tr> 
</table> 
</div> 

<!--music div starts--> 
<div id="music" class="box"> 
<table class="fieldgroup"> 
<tr><td>Music Title: <input id="Music Title" name="Music Title" type="text" size="60" class="f-name" tabindex="1" value="Music Title"> 
</table> 

<table class="fieldgroup"> 
<tr><td> Music Author: <input id="MusicAuthor" name="Music Author" type="text" size="40" class="f-name" tabindex="2" value="<"MusicAuthor"></td></tr> 
</table> 
</div>     

回答

3

禁止在div框是隱藏的輸入元素。當輸入被禁用時,它們不會出現在帖子中。

$(document).ready(function(){ 
    $("input[name$='itemlist']").click(function() { 
     var selection = $(this).val(); 
     $("div.box").hide(); 
     $("input, select, textarea", $("div.box")).attr("disabled", true); 
     $("#"+selection).show(); 
     $("input, select, textarea", $("#"+selection)).attr("disabled", false); 
    }); 
+0

如何動態禁用div中的輸入元素(基於哪個單選按鈕被選中)? – codeLearner 2010-06-02 17:29:25

+0

上面的代碼會禁用隱藏div中的輸入,就像您請求的那樣。你還問什麼? – 2010-06-02 17:51:01

+0

代碼工作正常,除了我選擇的單選按鈕也隱藏了所有輸入元素。我想啓用它們(我選擇的div框中的輸入元素)。 – codeLearner 2010-06-02 17:59:52

0

你可以調用$(...).remove()從DOM樹完全刪除元素。

另外,您也可以設置爲禁用<input>元素,這將防止它們被提交,就像這樣:

$(...).find(':input').attr('disabled', true); 

編輯:您可以刪除所有隱藏0表格前個元素提交這樣的:

$('form').submit(function() { 
    $(this).find(':input:hidden').remove(); 
}); 
+0

我試過.remove()但是當我點擊另一個單選按鈕時,它不再顯示。 – codeLearner 2010-06-02 17:15:11

+0

你可以在提交表單前調用'.remove()'。 – SLaks 2010-06-02 17:16:41

+0

請問你可以寄一些樣品代碼嗎? – codeLearner 2010-06-02 17:30:12