2010-06-02 7 views
1

J'ai le code suivant qui fonctionne bien mais le problème est qu'il soumet toujours le premier div (article) même s'il est caché. Ma question est comment puis-je soumettre le formulaire et les éléments dans le formulaire dans le div qui est montré? (Si je choisis la musique RadioButton, je veux présenter les éléments d'entrée de la musique Div pas l'article div. Merci.Comment soumettre les éléments div corrects (pas le div qui est caché)?

$(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>     

Répondre

3

Désactiver les éléments d'entrée dans la zone div qui est caché. Lorsque les entrées sont désactivées, elles n'apparaissent pas dans le message.

$(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

Comment désactiver dynamiquement les éléments d'entrée dans la div (selon le radiobutton choisi)? – codeLearner

+0

le code ci-dessus désactive les entrées dans le div caché comme vous l'avez demandé. Que demandez-vous d'autre? –

+0

Le code fonctionne bien, sauf le radiobutton que j'ai choisi ont également tous les éléments d'entrée cachés. Je veux les activer (les éléments d'entrée dans la boîte div que j'ai sélectionnés). – codeLearner

0

Vous pouvez appeler $(...).remove() pour supprimer complètement les éléments de l'arbre DOM.

vous pouvez également définir les éléments <input> est désactivé, ce qui les empêchera d'être soumis, comme celui-ci:

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

EDIT: vous pouvez supprimer tous caché <input> éléments avant l'envoi du formulaire comme celui-ci:

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

J'ai essayé .remove() mais quand je clique sur l'autre radiobutton, il ne s'affiche plus. – codeLearner

+0

Vous pouvez appeler '.remove()' avant de soumettre le formulaire. – SLaks

+0

pouvez-vous poster quelques exemples de code s'il vous plaît? – codeLearner