Ich habe dieses Formular in meiner App und werde es über AJAX senden, aber ich möchte HTML5 für die clientseitige Validierung verwenden. Daher möchte ich die Formularvalidierung erzwingen können, möglicherweise über jQuery.
Ich möchte die Validierung auslösen, ohne das Formular zu senden. Ist es möglich?
jquery
html
validation
razenha
quelle
quelle
Antworten:
Verwenden Sie Folgendes, um zu überprüfen, ob ein bestimmtes Feld gültig ist:
Verwenden Sie Folgendes, um zu überprüfen, ob das Formular gültig ist:
Wenn Sie die nativen Fehlermeldungen einiger Browser (z. B. Chrome) anzeigen möchten, können Sie dies leider nur durch Senden des Formulars wie folgt tun:
Hoffe das hilft. Beachten Sie, dass die HTML5-Validierung nicht in allen Browsern unterstützt wird.
quelle
$myForm.submit()
durch$myForm.find(':submit').click()
$('<input type="submit">').hide().appendTo($myForm).click().remove();
checkValidity()
, hat aber auch einen gefährlichen Fehler.checkValidity()
löst native Browser-Fehlermeldungen aus, nicht das Klicken auf die Schaltfläche "Senden". Wenn Sie einen Ereignis-Listener haben, der auf das Klicken auf die Schaltfläche "Senden" hört, lösen Sie ihn aus, wenn Sie "$ myForm.find (": Senden "). Click ()" ausführen, was sich selbst auslöst und eine unendliche Rekursion verursacht.Ich habe festgestellt, dass diese Lösung für mich funktioniert. Rufen Sie einfach eine Javascript-Funktion wie folgt auf:
action="javascript:myFunction();"
Dann haben Sie die HTML5-Validierung ... ganz einfach :-)
quelle
action="javascript:0"
das<form>
und gebundeneclick
Event auf das<button>
to gesetztMyFunction()
und alles hat super funktioniert. Ich halte alle JS aus HTML heraus.MyFunction
kann dann testen,form.checkValidity()
um fortzufahren.onsubmit()
ist fast immer besser als das Binden an Schaltflächenonclick()
, da es andere Möglichkeiten gibt, ein Formular zu senden. (Insbesondere durchreturn
action="javascript:myFunction();"
nochaction="javascript:0"
funktioniert es im neuesten Firefox (67). Funktioniert aber auf Chrome.from: HTML5-Formularüberprüfung
quelle
reportValidity
wird nur von Chrome 40.0$("form")[0].reportValidity()
. Ich brauche das für den Fall, dass die Gültigkeitsprüfung fehlschlägt.Der folgende Code funktioniert für mich.
quelle
reportValidity()
ist die beste Funktion zum Hervorheben erforderlicher Felder.Hier ist ein allgemeinerer Weg, der etwas sauberer ist:
Erstellen Sie Ihr Formular wie folgt (kann ein Dummy-Formular sein, das nichts bewirkt):
Binden Sie alle Formulare, die Sie nicht wirklich einreichen möchten:
Nehmen wir nun an, Sie haben eine
<a>
(innerhalb der<form>
), mit der Sie beim Klicken das Formular validieren möchten:Einige Anmerkungen hier:
checkValidity()
ist ausreichend (zumindest in Chrome). Wenn andere Kommentare zum Testen dieser Theorie in anderen Browsern hinzufügen könnten, werde ich diese Antwort aktualisieren.<form>
. Dies war nur eine saubere und flexible Möglichkeit, eine Allzwecklösung zu finden.quelle
Vielleicht zu spät zur Party, aber irgendwie habe ich diese Frage gefunden, als ich versucht habe, ein ähnliches Problem zu lösen. Da bei mir kein Code von dieser Seite funktioniert hat, habe ich in der Zwischenzeit eine Lösung gefunden, die wie angegeben funktioniert.
Das Problem ist, wenn Ihr
<form>
DOM ein einzelnes<button>
Element enthält , das<button>
nach dem Auslösen automatisch die Form verdirbt. Wenn Sie mit AJAX spielen, müssen Sie wahrscheinlich die Standardaktion verhindern. Aber es gibt einen Haken: Wenn Sie dies nur tun, verhindern Sie auch die grundlegende HTML5-Validierung. Daher ist es ratsam, Standardeinstellungen für diese Schaltfläche nur dann zu verhindern, wenn das Formular gültig ist. Andernfalls schützt Sie die HTML5-Validierung vor dem Senden. jQuerycheckValidity()
hilft dabei:jQuery:
Mit dem oben beschriebenen Code können Sie die grundlegende HTML5-Validierung (mit Typ- und Musterübereinstimmung) OHNE Senden des Formulars verwenden.
quelle
Sie sprechen von zwei verschiedenen Dingen: "HTML5-Validierung" und Validierung von HTML-Formularen mit Javascript / jquery.
HTML5 "hat" integrierte Optionen zum Überprüfen eines Formulars. B. die Verwendung des Attributs "Erforderlich" für ein Feld, das (basierend auf der Browserimplementierung) die Formularübermittlung ohne Verwendung von Javascript / jquery fehlschlagen kann.
Mit javascrip / jquery können Sie so etwas tun
quelle
triggerHtml5Validation()
Funktion auslösen möchten . Der obige Code fügt Ihrem Formular ein Übermittlungsereignis hinzu. Beim Absenden fangen Sie das Ereignis ab und validieren das Formular. Wenn Sie das Formular niemals senden möchten, erfolgt die Übermittlung einfachreturn false;
und niemals.return (valid) ? true : false
===return valid
. :)return valid
für null / undefinierte Werte einfach nicht false zurückgegeben wird. Aber es ist nicht wirklich wichtig, die Antwort war sowieso Pseudocode, der Punkt ist: benutze return false, um das Formular nicht einzureichen ^^quelle
Um alle erforderlichen Formularfelder zu überprüfen, ohne die Schaltfläche "Senden" zu verwenden, können Sie die folgende Funktion verwenden.
Sie müssen den Steuerelementen das erforderliche Attribut zuweisen .
quelle
Sie benötigen jQuery nicht, um dies zu erreichen. Fügen Sie in Ihrem Formular Folgendes hinzu:
oder in JavaScript:
In Ihrer
buttonSubmit
Funktion (oder wie auch immer Sie es nennen) können Sie das Formular mit AJAX senden.buttonSubmit
wird nur aufgerufen, wenn Ihr Formular in HTML5 validiert ist.Falls dies jemandem hilft, ist hier meine
buttonSubmit
Funktion:Einige meiner Formulare enthalten mehrere Senden-Schaltflächen, daher diese Zeile
if (submitvalue == e.elements[i].value)
. Ich habe den Wert für diesubmitvalue
Verwendung eines Klickereignisses festgelegt.quelle
Ich hatte eine ziemlich komplexe Situation, in der ich mehrere Senden-Schaltflächen benötigte, um verschiedene Dinge zu verarbeiten. Zum Beispiel Speichern und Löschen.
Die Basis war, dass es auch unauffällig war, so dass ich es nicht einfach zu einem normalen Knopf machen konnte. Wollte aber auch die HTML5-Validierung nutzen.
Außerdem wurde das Übermittlungsereignis überschrieben, falls der Benutzer die Eingabetaste drückte, um die erwartete Standardübermittlung auszulösen. in diesem Beispiel speichern.
Hier sind die Bemühungen der Verarbeitung des Formulars, weiterhin mit / ohne Javascript und mit HTML5-Validierung mit Submit- und Click-Ereignissen zu arbeiten.
xHTML
JavaScript
Die Einschränkung bei der Verwendung von Javascript besteht darin, dass der Standard-Onclick des Browsers an das Submit-Ereignis weitergegeben werden muss, um die Fehlermeldungen anzuzeigen, ohne jeden Browser in Ihrem Code zu unterstützen. Andernfalls wird das Klickereignis, wenn es mit event.preventDefault () überschrieben wird oder false zurückgibt, niemals an das Submit-Ereignis des Browsers weitergegeben.
Es ist darauf hinzuweisen, dass in einigen Browsern das Senden des Formulars nicht ausgelöst wird, wenn der Benutzer die Eingabetaste drückt, sondern die erste Schaltfläche zum Senden im Formular ausgelöst wird. Daher gibt es ein console.log ('form submit'), das anzeigt, dass es nicht ausgelöst wird.
quelle
jQuery
explizit verwendet. Es unterscheidet sich darin, dass es die Verarbeitung der HTML5-Validierung mit mehreren Übermittlungsschaltflächen behandelt und die Übermittlung des AJAX-Formulars verhindert, wenn es ungültig ist. Standardmäßig wird diesave
Aktion verwendet, wenn der Benutzer dieenter
Taste auf der Tastatur drückt . Zum Zeitpunkt meiner Veröffentlichung war keine der bereitgestellten Antworten eine Lösung für mehrere Senden-Schaltflächen oder das Erfassen der Eingabetaste, um eine Ajax-Übermittlung zu verhindern.Sie können dies tun, ohne das Formular zu senden.
Zum Beispiel, wenn sich die Schaltfläche zum Senden eines Formulars mit der ID "Suchen" im anderen Formular befindet. Sie können das Klickereignis auf dieser Senden-Schaltfläche aufrufen und danach ev.preventDefault aufrufen. Für meinen Fall validiere ich Formular B aus Formular A Einreichung. So was
quelle
Dieser Weg funktioniert gut für mich:
Fügen Sie ein
onSubmit
Attribut hinzuform
, vergessen Sie nicht, esreturn
in den Wert aufzunehmen.Definieren Sie die Funktion.
quelle
keine beste Antwort, funktioniert aber für mich.
quelle
Ich weiß, dass dies bereits beantwortet wurde, aber ich habe eine andere mögliche Lösung.
Wenn Sie jquery verwenden, können Sie dies tun.
Erstellen Sie zunächst einige Erweiterungen für jquery, damit Sie diese nach Bedarf wiederverwenden können.
Als nächstes machen Sie so etwas, wo Sie es verwenden möchten.
quelle
quelle
Dies funktionierte von mir, um die nativen HTML 5-Fehlermeldungen mit Formularüberprüfung anzuzeigen.
Hinweis: RegForm ist das
form id
.Referenz
Hoffnung hilft jemandem.
quelle
Dies ist eine ziemlich einfache Methode, mit der HTML5 die Validierung für jedes Formular durchführt und gleichzeitig die moderne JS-Kontrolle über das Formular hat. Die einzige Einschränkung ist, dass sich der Senden-Button innerhalb des befinden muss
<form>
.html
js
quelle
Ich denke der beste Ansatz
wird das jQuery Validation- Plugin verwenden, das Best Practices für die Formularvalidierung verwendet und außerdem eine gute Browserunterstützung bietet. Sie müssen sich also keine Gedanken über Probleme mit der Browserkompatibilität machen.
Und wir können die Funktion jQuery validation valid () verwenden, die prüft, ob das ausgewählte Formular gültig ist oder ob alle ausgewählten Elemente gültig sind, ohne das Formular zu senden.
quelle
Gemäß der Frage sollte die Gültigkeit von HTML5 zunächst mit jQuery validiert werden können. In den meisten Antworten geschieht dies nicht und der Grund dafür ist folgender:
während der Validierung mit der Standardfunktion des HTML5-Formulars
Wir müssen verstehen, dass jQuery ein Objektarray zurückgibt, während wir dies auswählen
Daher müssen Sie den ersten Index angeben, damit die Funktion checkValidity () funktioniert
Hier ist die Komplettlösung:
quelle