Ich habe eine Webseite mit 3 Formularen. Nicht verschachtelt, nur eine nach der anderen (sie sind fast identisch, nur eine versteckte Variable, die anders ist). Ein Benutzer füllt nur ein Formular aus und ich möchte / etc alle Formulare mit nur einem JS-Skript validieren.
Wie kann ich also, wenn ein Benutzer auf die Schaltfläche "Senden" von Formular 1 klickt, dafür sorgen, dass mein js-Skript nur mit den Feldern in Formular 1 umgeht? Ich nehme an, es hat etwas mit $ (this) .parents zu tun, aber ich bin mir nicht sicher, was ich damit machen soll.
Mein Validierungsskript (das ich an anderer Stelle mit nur einem Formular verwendet habe) sieht ungefähr so aus:
$(document).ready(function(){
$("#submit").click(function(){
$(".error").hide();
var hasError = false;
var nameVal = $("#name").val();
if(nameVal == '') {
$("#name").after('Please enter your name.');
hasError = true;
}
if(hasError == false) {blah blah do all the processing stuff}
Muss ich also Dinge wie $ ("# name"). Val () durch $ (this) .parents ('form'). Name.val () ersetzen? Oder gibt es einen besseren Weg, dies zu tun?
Vielen Dank!
var form = $(this).form
wie in normalem Javascript verwenden:function onClick(button) { var form = button.form; }
???Ich habe diese Antwort gefunden, als ich nach der Form eines Eingabeelements gesucht habe. Ich wollte eine Notiz hinzufügen, weil es jetzt einen besseren Weg gibt als:
Ich bin nicht sicher, wann es zu jQuery hinzugefügt wurde, aber die next () -Methode macht genau das, was benötigt wird, sauberer als die Verwendung von parent (). Mit dem nächsten kann der Code wie folgt geändert werden:
Es wird durchlaufen und findet das erste Element, das dem entspricht, wonach Sie suchen, und stoppt dort, sodass Sie nicht angeben müssen: zuerst.
quelle
Um das Formular zu erhalten, in dem sich die Übermittlung befindet, warum nicht einfach
Einfachster und schnellster Weg zum Ergebnis.
quelle
Ich habe die folgende Methode verwendet und es hat gut für mich funktioniert
$('#mybutton').closest("form")
hat den Trick für mich gemacht.quelle
Eileen: Nein, das ist es nicht
var nameVal = form.inputname.val();
. Es sollte entweder ...in jQuery:
Oder in JavaScript:
Oder eine Kombination:
Mit jQuery können Sie sogar alle Eingaben im Formular durchlaufen:
quelle