die Ausrichtung auf eine spezifische form mit serialize()
Folgenden auf aus meiner vorherigen Frage, das war so schnell beantwortet von Meder es war nicht lustig, es gibt jetzt eine weitere Frage, die aufgetaucht ist, in den Prozess der Herstellung einer wiederverwendbaren jQuery-Formular vorgelegt, dass nicht der Benutzer entfernt, von wo Sie waren.
Problem
Den jQuery serialize()
Funktion durchführen seine Magie auf alle Formulare innerhalb einer Seite, und nicht die spezifische form, die übermittelt wurde. Beispiel-code unten.
Wie kann ich erfassen die form eindeutiger name/id und ersetzen Sie "form"
innerhalb $("form").serialize()
mit dem Namen des target-form, so dass nur das ist für serialisierte?
Form-code
<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 und post
var dataString = $("form").serialize();
//alert (dataString);return false;
$.ajax({
type: "POST",
url: "/_global/assets/scripts/formmail/formmail.asp",
data: dataString,
...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie anbringen, eine Ereignisprozedur für eine Schaltfläche oder das Formular
submit
event dann können Sie finden, um es mitthis
wenn innerhalb dersubmit
event-handler-Funktion, Anwendungsbereich, z.B.Empfehle ich die Lektüre http://docs.jquery.com/Selectors
this
Schlüsselwort in der richtigen Funktion scope/Kontext.$('form.validate').submit(function(){})
und verwenden Sie dannthis
innen beziehen sich auf die form.Indem Sie die "form" string als selector, Sie sind eigentlich immer alle
FORM
Elemente innerhalb der Seite, um wählen Sie nur eine form, können Sie:Bekommen, die spezifische form, durch Ihre id-Attribut (mit der id-Selektor):
Oder durch seinen Namen-Attribut (mit der attributeEquals Auswahl):
Anstatt
serialize
es gibt eine schöne plugin, das Ihnen erlaubt, post-Formulare asynchron. Alles, was Sie tun müssen, ist:Vergessen Sie auch nicht zuordnen, um die richtige Aktion, um die form, es sollte nicht leer sein.