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)
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");
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) : $();
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`
});
À 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 .
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
});