2009-07-07 2 views
0

ich bin ziemlich neu zu jQuery, und ich weiß nicht, wie man das macht, und wenn es getan werden kann, ohne das Plugin manuell zu bearbeiten.jQuery ajaxSubmit(): ho, um das Formular, das auf die Felder ID verweist, anstelle des Feldnamens zu senden?

Angenommen, ein einfach zu haben, so bilden:

<form action="page.php" method="post"> 
Name: <input type="text" name="Your name" id="contact-name" value="" /> 
Email: <input type="text" name="Your email" id="contact-email" value="" /> 
</form> 

Wenn Sie es einreichen, sowohl im ‚Standard‘ Art und Weise oder mit ajaxSubmit(), die Werte des Antrags das Etikett des Feldnamens nehmen, so in der page.php werde ich habe:

$_POST['Your name']; 
$_POST['Your email']; 

Stattdessen werde ich mag die vorgelegten Werte mit dem id beschriften des Feldes:

$_POST['contact-name']; 
$_POST['contact-email']; 

Gibt es eine Möglichkeit, das mit jquery und dem ajaxsubmit() Plugin zu tun? Und vielleicht gibt es eine Möglichkeit, es sogar mit der normalen Verwendung eines Formulars zu tun?

ps: Ja, ich weiß, ich könnte die Namen und ID-Attribute des Feldes als 'Kontaktname' festlegen, aber wie sind zwei Attribute, die den gleichen Wert enthalten, nützlich?

Antwort

2

Gemäß der HTML-Spezifikation sollte der Browser das Attribut name übermitteln, das nicht über alle Elemente hinweg eindeutig sein muss.

Einige serverseitige Sprachen wie Rails und PHP nehmen mehrere Elemente mit bestimmten identischen Namen und serialisieren sie in Datenstrukturen. Zum Beispiel:

<input type="text" name="address[]" /> 
<input type="text" name="address[]" /> 

Wenn der Benutzer in 1 Infinite Loop im ersten Feld und Suite 45 im zweiten Feld, PHP und Rails zeigen [ „1-Endlos-Schleife“, „Suite 45“] als Inhalt der address Parameter.

Dies bezieht sich alles auf das Attribut name. Auf der anderen Seite ist das id Attribut entworfen, um ein Element auf der Seite eindeutig darzustellen. Es kann mithilfe von CSS unter Verwendung von #myId und in JavaScript-Rohdaten unter Verwendung von document.getElementById referenziert werden. Weil es einzigartig ist, ist das Suchen in JavaScript sehr schnell. In der Praxis würden Sie jQuery oder eine andere Bibliothek verwenden, die diese Details vor Ihnen verbergen würde.

Es ist durchaus üblich, dass Benutzer den gleichen Attributwert für id und name verwenden, aber der einzige, den Sie für die Formularübermittlung beachten müssen, ist name. Das jQuery Form Plugin emuliert das Verhalten des Browsers sehr genau, das gleiche gilt für ajaxSubmit.

+0

Ok, verstanden. Also werde ich den Namen und die ID gleich setzen, und ich werde das Titelattribut für die kurze Beschreibung verwenden – Strae

1

Es ist die Art, wie Formulare in HTML funktionieren.

Außerdem funktionieren IDs nicht für Kontrollkästchen und Optionsfelder, da Sie wahrscheinlich mehrere Steuerelemente mit demselben Namen (aber einem anderen Wert) haben, während das ID-Attribut eines HTML-Elements in Ihrem Dokument eindeutig sein muss.

Wenn Sie wirklich wollten, könnten Sie eine Präprozessor JavaScript-Funktion erstellen, die den Namen jedes Formularelements auf den ID-Wert setzt, aber das wäre nicht sehr klug IMHO.

+0

Verdammt, ich dachte nicht über die Checkboxen und Radiobutton, du bist richtig, die ID soll einzigartig sein ... – Strae

0
var name = $("#contact-name").val(); 
var email = $("#contact-email").val(); 
$.post("page.php", { contact-name: name, contact-email: email }); 

Dadurch können Sie das Formular mit benutzerdefinierten Attributen veröffentlichen.

+0

Ja, ich weiß, aber das Plugin erlaubt auch den Datei-Upload, ich mag es nicht, das Rad neu zu erfinden Erstellen eines anderen Plugins .. – Strae

+0

Ah. Aha. Ich dachte, du fragst nur über jQuery AJAX-Anrufe im Allgemeinen. Wenn man sich den Quellcode des Plugins anschaut, scheint es am einfachsten zu sein, das Plugin zu modifizieren, um stattdessen die 'ID' von Formularelementen zu senden. – peirix

Verwandte Themen