Initialisieren jQuery validate () - Funktion auf mehrere dynamisch Hinzugefügt werden, Formen
Es wurde vorgeschlagen, dass es am besten ist, zum initialisieren einer $('#form').validate({})
Funktion die beim laden der Seite, anstatt auf ein click-Ereignis: jquery.form/validate plugin erlauben nur Einreichen, wenn die Eingabe geändert wird
Frage ich mich, wie dies zu tun für mehrere dynamisch hinzugefügte Formen, ohne das einwickeln der $('#form').validate({})
Funktion innerhalb eines on('click', 'input[type="submit"]',
Funktion.
Diesen code zum Beispiel:
var id="some identifier for the specific form that is submitted";
`$('#form'+id).validate({})`
- Wie funktioniert diese eindeutige Kennung,
id
, die erforderlich ist, um zu unterscheiden, jede form erhalten Sie in Erster Linie erstellt? - Und was ist, wenn Sie nicht wissen, die
id
nachdem die Seite geladen ist, weil es dynamisch erstellt werden, z.B. durch AJAX.
Ich habe das getan, aber das ist ist, was nicht empfohlen:
$(document.body).on('click', 'input[type="submit"]', function(){
var id=this.id;
$('#form'+id).validate({});
});
Gedanken?
Dank,
tim
- Ja, ich habe ein Kommentarsystem. Jeder Kommentar kann kommentiert werden, aber ich weiß nicht, die
comment_id
für das nächste Formular, bis ich stecken Sie den Kommentar in die Datenbank und gibt die Zeileid
. Ich denke, du hast Recht, obwohl ich könnte initialisierenvalidate()
auf die neue form nach meinemtemplating()
- Funktion erzeugt. - Der form überhaupt nicht existieren, wenn die Seite geladen wird? Wenn dem so ist, dann anstelle der Initialisierung der
validate()
aufsubmit
ist, würde ich es initialisieren sofort, nachdem das Formular erstellt ist ($(#myNewform).validate({ options, etc. })
) - Ja, Sie würde wollen, dass es initialisiert ist, bevor Sie es übermitteln, nicht nach/während.
- Die Allgemeine Argumentation ist, dass ich ein Spiel mit dem Feuer in der Aufrufliste durch die Initialisierung beim Absenden? Auch Für die Formen, die vorhanden sind, auf die Seite laden, sollte ich Sie initialisieren, jeder von Ihnen mit dieser:
$('form').each(function(){...$(this).validate()});
? - Ja, wenn alle
validate()
Optionen/Instanzen sind die gleichen für alle vorhandenen Formen, ich sehe nicht, warum Sie konnte nicht initialisiert Sie alle mit einem.each(function(){
. - ja, die Optionen werden die gleichen sein. Um sicher zu stellen, kann ich eine Klasse Hinzugefügt werden, um den Wahlschalter so:
$('.someform').each(function()...
? - Sie sind möglicherweise nicht mit dem Feuer spielen, aber, wie ich zeigte, in den anderen drei Fragen, erhalten Sie seltsame Probleme, wenn die Formulare nicht überprüfen und Sie versuchen, zu senden, Sie ein zweites mal.
- ich sehe, vielen Dank für die Klarstellungen. Ich werde über diese links mehr gezielt jetzt und upvote Eure Antworten. Vielen Dank für Ihre Hilfe!
- Ich weiß es zu schätzen, aber lass mich post eine Antwort unten statt.
- ok, das wird auch funktionieren, danke
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn die form überhaupt nicht existieren, wenn die Seite geladen wird, dann statt der Initialisierung der
.validate()
auf "Absenden", würde ich es initialisieren sofort, nachdem das Formular erstellt...(
validate()
sollte nicht innerhalb eines submit-handler, da die Validierung wird erst initialisiert, nachdem der submit-button geklickt wird. Dies führt zu Problemen, wenn der Formular-Validierung schlägt fehl und muss vorgelegt werden, eine zweite Zeit. Die zweite Einreichen, dann re-initialisiert das plugin auf das Formular ein zweites mal. Sehen hier, hier, und hier für ähnliche Probleme.)Für bestehende
form
auf Seite...oder für mehrere
form
's teilen-Validierung Optionen...