Überprüfen, ob Formular gültig ist, ohne erneutes ausführen von jquery-validation

Mit jQuery Validierung, gibt es eine Möglichkeit, um festzustellen, ob ein Formular gültig ist ohne erneuten überprüfung form.

Pro diese Frage auf wie Sie eine "submitHandler" - Funktion bei der Verwendung von jQuery Unobtrusive Validation?, ich höre die invalid-form.validate Ereignis, um dem Benutzer eine benutzerdefinierte Fehlermeldung, wenn das Formular validiert worden ist und auch Fehler hat.

Pro diese Frage auf, wie verhindern Doppel-klicken Sie auf abschicken, ich bin durch das deaktivieren der Schaltfläche Einreichen, sobald das Formular abgesendet wurde, aber nur, wenn die form gültig ist, so kann der Benutzer die Korrekturmaßnahmen und erneut nachdem die form gesäubert.

Das problem ist jetzt invalid-form.validate feuert zweimal.

Da die invalid-form.validate - Ereignis wird ausgelöst, bevor meine Formular-handler, ich werde schon wissen, die Anzahl der Fehler. Hat die .valid() Methode beibehalten, die Anzahl der Fehler, die ich irgendwo überprüfen kann, die gegen diesen Wert anstelle der erneuten überprüfung der form.

Hier ist ein Beispiel in der stack-snippets. Treffer vorzulegen, füllen Sie die erforderlichen Felder aus und Sie werden sehen, zwei Fehlermeldungen.

JS:

$("form").validate();

//show message on invalid submission
$("form").on("invalid-form.validate", function (event, validator) {
  var errors = validator.numberOfInvalids();
  if (errors) {
    alert('There is a problem with ' + errors + ' fields.');
  }
});

//prevent double click form submission
$('form').submit(function () {
  if ($(this).valid()) {
    $(':submit', this).attr('disabled', 'disabled');
  }
});

HTML:

<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.13.1/jquery.validate.js"></script>

<form >
  <input type="text" name="Name" required /><br/>
  <input type="text" name="Email" required /><br/>
  <input type="submit" value="Submit"/>
</form>

Konnte ich speichern, um das element in meinem invalid-form.validate, aber das wird nicht aktualisiert, wenn das Formular gültig ist und auch Paare meine Doppel-klicken Sie auf code sehr stark mit meiner benutzerdefinierten Fehler-code. Wenn ich die benutzerdefinierten Fehler-code zu einem späteren Zeitpunkt werde ich haben, zu schreiben, die Doppel-klicken Sie auf die Prävention.

Irgendwelche Ideen?

  • Sollten Sie absolut nicht zu haben, ein weiteres submit() handler. Jedoch, da Sie nicht technisch müssen die submit, das plugin kümmert sich um das... versuchen ein click hander statt. OBWOHL, sollten Sie nicht brauchen einen click handler entweder... keine Taste Aufnahme ist hier erforderlich.
  • Ihr Titel ist ein Trugschluss. Sie können nicht feststellen, ob das Formular gültig ist, ohne "laufen" durch die Validierung.
  • Sie zitiert mich. Mein Titel ist zu wissen, ob das Formular gültig ist ohne "re-laufen" - Validierung. Die überprüfung geschieht bereits unmittelbar vor dem event-handler feuert. Ich brauche nicht zu reüberprüfen 5 Millisekunden später. Dass ist sicherlich im Bereich des möglichen. Hier ist ein demo, es geschieht in fiddle. Ich erwähnte dies als eine Möglichkeit in Frage, aber es fühlt sich nicht sehr sauber an mich.
  • Ja, habe ich falsch verstanden, die Formulierung Ihrer Titel. Allerdings ist die Ursache klar, und Sie haben anscheinend gelöst es auf Ihrem eigenen.
InformationsquelleAutor KyleMit | 2015-02-23
Schreibe einen Kommentar