web-dev-qa-db-fra.com

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? (Lorsque je clique sur le bouton Soumettre, je souhaite sélectionner le formulaire et y ajouter des champs)

202
kmunky

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

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

Au lieu de filtrer par le nom, je voudrais faire ceci:

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

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

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

Pour moi, cela ressemble au plus simple/rapide:

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

À partir des navigateurs HTML5, on peut utiliser inputElement.form - la valeur de l'attribut doit être l'id d'un élément <form> dans le même document . Plus d'informations sur MDN .

0
Alexander Mihailov

voir aussi jquery/js - Comment sélectionner le formulaire parent sur lequel le bouton d'envoi a été cliqué?

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