232 votes

jQuery trouver le formulaire parent

j'ai ce html

 <ul>
    <li><form action="#" name="formName"></li>
    <li><input type="text" name="someName" /></li>
    <li><input type="text" name="someOtherName" /></li>
    <li><input type="submit" name="submitButton" value="send"></li>
    <li></form></li>
</ul>
 

Comment puis-je sélectionner le formulaire dont le input[name="submitButton"] fait partie? (quand je clique sur le bouton de soumission je veux sélectionner le formulaire et ajouter quelques champs dedans)

501voto

karim79 Points 178055

Je suggère d'utiliser closest , qui sélectionne l'élément parent correspondant le plus proche:

 $('input[name="submitButton"]').closest("form");
 

Au lieu de filtrer par le nom, je ferais ceci:

 $('input[type=submit]').closest("form");
 

56voto

peterjwest Points 1276

Vous pouvez utiliser la référence de formulaire qui existe sur toutes les entrées, c'est beaucoup plus rapide que .closest() (5 à 10 fois plus rapide dans Chrome et IE8). Fonctionne sur IE6 et 7 aussi.

 var input = $('input[type=submit]');
var form = input.length > 0 ? $(input[0].form) : $();
 

21voto

userfuser Points 307

Pour moi, cela ressemble à la plus simple / la plus rapide:

 $('form input[type=submit]').click(function() { // attach the listener to your button
   var yourWantedObjectIsHere = $(this.form);   // use the native JS object with "this"
});
 

0voto

Jonathan Hendler Points 696

voir aussi http://stackoverflow.com/questions/311579/jquery-js-how-do-i-select-the-parent-form-based-on-which-submit-button-is-clic

 $('form#myform1').submit(function(e){
     e.preventDefault(); //Prevent the normal submission action
     var form = this;
     // ... Handle form submission
});
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X