le ciblage d'une forme spécifique avec serialize()
Suivantes sur à partir de ma question précédente, qui a été afin de répondre rapidement par Meder il n'était pas drôle, il y a maintenant une autre question qui a surgi dans le processus de fabrication d'une réutilisables jQuery formulaire qui ne prend pas à l'utilisateur de là où ils étaient.
Problème
Le jQuery serialize()
fonction est d'effectuer sa magie sur toutes les formes à l'intérieur d'une page, et non pas la forme spécifique qui a été soumis. Exemple de code ci-dessous.
Comment puis-je capturer la forme unique du nom/id, et remplacer "form"
dans $("form").serialize()
avec le nom de la cible forme donc seul qu'il est sérialisé?
Le code du formulaire
<form name="contact" id="contact" action="">
<input name="_recipients" type="hidden" value="[email protected]" />
<input name="_subject" type="hidden" value="Title" />
...
<fieldset>
<label for="name" id="name_label">Name</label>
<input type="text" name="name" id="name" size="30" value="" class="text-input" />
<label class="error" for="name" id="name_error">This field is required.</label><br />
<label for="email" id="email_label">Return Email</label>
<input type="text" name="email" id="email" size="30" value="" class="text-input" />
<label class="error" for="email" id="email_error">This field is required.</label><br />
<label for="phone" id="phone_label">Return Phone</label>
<input type="text" name="phone" id="phone" size="30" value="" class="text-input" />
<label class="error" for="phone" id="phone_error">This field is required.</label><br/>
<br />
<input type="submit" name="submit" class="button" id="submit_btn" value="Send your suggestion" />
</fieldset>
</form>
jQuery serialise et post
var dataString = $("form").serialize();
//alert (dataString);return false;
$.ajax({
type: "POST",
url: "/_global/assets/scripts/formmail/formmail.asp",
data: dataString,
...
Vous devez vous connecter pour publier un commentaire.
Si vous êtes à la fixation d'un gestionnaire d'événement à un bouton ou à la forme du
submit
cas, alors vous pouvez le consulter avecthis
si à l'intérieur de lasubmit
fonction de gestionnaire d'événement de portée, par exemple,Je recommande fortement la lecture de http://docs.jquery.com/Selectors
this
mot-clé dans le bon fonctionnement et la portée de contexte.$('form.validate').submit(function(){})
et ensuite utiliserthis
à l'intérieur de vous référer à la forme.À l'aide de la "forme" de la chaîne comme un sélecteur, tu reçois tous les
FORM
éléments dans la page, dans le but de sélectionner un seul formulaire, vous pouvez:Obtenir le formulaire spécifique par son attribut id (à l'aide de la sélecteur d'id):
Ou par son nom (attribut à l'aide de la attributeEquals sélecteur):
Au lieu d'utiliser
serialize
il y a une belle plugin qui vous permet de poster vos formes de manière asynchrone. Tout ce que vous avez à faire est de:Aussi, ne pas oublier de donner la bonne action de la forme, il ne devrait pas être vide.