Kernpunkte
.willValidate
, .checkValidity()
, .validity
und .setCustomValidity()
. Diese werden verwendet, um zu überprüfen, ob die Felder überprüft werden, die Felder verifiziert werden, die Gültigkeit der Felder und die benutzerdefinierte Gültigkeitsnachricht festgelegt werden. Allerdings werden nicht alle Attribute von allen Browsern unterstützt. Dieser Artikel ist der letzte in einer dreiteiligen Serie über HTML5-Webformulare, und wir werden die API von JavaScript Integration und Beschränkungsüberprüfung diskutieren. Wenn Sie die Artikel mit Tagged und CSS nicht gelesen haben, lesen Sie es zuerst, um sicherzustellen, dass Sie mit diesen Konzepten vertraut sind. Mit HTML5 können wir die Validierung des Client -Formulars ohne JavaScript -Code implementieren. Bei der Implementierung komplexerer Formen müssen wir jedoch die native Validierung verbessern, da:
:invalid
:required
Abfangform -Einreichung
Vor dem HTML5 wird die Client -Überprüfung ein Einreichungshandler an ein Formular anhängen, das das Feld überprüft, einen Fehler an zeigt und Einreichungsereignisse blockiert. In HTML5 führt der Browser zunächst eine eigene Überprüfung durch - das Einreichungsereignis wird nur dann ausgelöst, wenn das Formular gültig ist. Wenn Sie also etwas Kompliziertes tun möchten, z. B. das Anzeigen Ihres eigenen Fehlers, des Vergleichs oder des automatischen Füllens, müssen Sie die native Überprüfung ausschalten, indem Sie die
-Sache des Formulars auf: noValidate
festlegen
true
var form = document.getElementById("myform"); form.noValidate = true; // 设置处理程序以在提交时验证表单 // onsubmit 用于更轻松的跨浏览器兼容性 form.onsubmit = validateForm;
Feld
Eigenschaften Jedes Eingabefeld hat ein -Handler, der alle Felder durchläuft und prüft, ob eine native Überprüfung verfügbar ist:
überprüfen können! Wir wissen nun, dass der Code im ersten Codeblock bewertet wird, wenn er mit nationaler Validierung verwendet werden kann. Aber ...
Wenn Sie den ersten Teil lesen, werden Sie sich daran erinnern, dass die Eingabetypen, die nicht unterstützt werden, auf den Text zurückfallen. Zum Beispiel:
Keine native Unterstützung in Firefox 29 oder IE11. Diese Browser werden (effektiv): Beide Browser unterstützen jedoch die Überprüfung des Texttyps, daher wird -attribute mit den
zurück. Es gibt auch eine ähnliche Objekte haben die folgenden Eigenschaften: Nicht alle Eigenschaften werden von allen Browsern unterstützt. Achten Sie also darauf, nicht zu viele Annahmen zu treffen. In den meisten Fällen sollte das Ergebnis von (Der nachfolgende Inhalt entspricht dem Originaltext, und die Länge ist zu lang, sodass er hier weggelassen wird. Bitte passen Sie die Länge und die Details des Ausgangsinhalts selbst nach Bedarf an.) Das obige ist der detaillierte Inhalt vonHTML5 -Formulare: JavaScript und die API zur Beschränkungsvalidierung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!.willValidate
.willValidate
Attribut. Dies wird zurückkehren:
zurückgegeben. Erstellen wir unseren true
: Wenn der Browser das native Verifizierungsfeld platziert;
false
undefined
false
validateForm
Die Loop -Iteraten stellen alle Felder in einer einzelnen var form = document.getElementById("myform");
form.noValidate = true;
// 设置处理程序以在提交时验证表单
// onsubmit 用于更轻松的跨浏览器兼容性
form.onsubmit = validateForm;
elements
function validateForm(event) {
// 获取跨浏览器事件对象和表单节点
event = (event ? event : window.event);
var
form = (event.target ? event.target : event.srcElement),
f, field, formvalid = true;
// 循环所有字段
for (f = 0; f < form.elements.length; f++) {
// 获取字段
field = form.elements[f];
// 忽略按钮、字段集等
if (field.nodeName !== "INPUT" && field.nodeName !== "TEXTAREA" && field.nodeName !== "SELECT") continue;
// 原生浏览器验证可用吗?
if (typeof field.willValidate !== "undefined") {
// 原生验证可用
}
else {
// 原生验证不可用
}
}
}
false
undefined
field.willValidate
unterstützt der Browser Eingangstypen? // 原生浏览器验证可用吗?
if (typeof field.willValidate !== "undefined") {
// 原生验证可用
}
else {
// 原生验证不可用
}
<input type="date" name="dob" />
field.willValidate
-attributen des Objekts übereinstimmen - wenn sie nicht übereinstimmen, müssen wir die Legacy -Fallback -Überprüfung implementieren, z. B. undefined
type
.type
<input type="text" name="dob" />
.checkValidity()
Wenn eine native Überprüfung verfügbar ist, können Sie die Methode ausführen, um das Feld zu überprüfen. Wenn es kein Problem gibt, gibt die Methode .checkValidity()
-Methode, die den aktuellen Zustand ohne Wiederholung zurückgibt, obwohl dies nicht sehr nützlich ist und von allen Browsern nicht unterstützt wird. Diese beiden Methoden werden auch: true
sein
false
.reportValidity()
Das Feld Wenn die Überprüfung fehlschlägt, wird das Ereignis
.validity
-Ereignis gibt. Denken Sie daher daran, den Fehlerstil und die Meldung bei Bedarf zurückzusetzen. invalid
valid
field .validity
.valid
- Gibt true
zurück, wenn es keinen Fehler im Feld gibt, andernfalls gibt false
zurück.
.valueMissing
- Gibt true
zurück, wenn das Feld erforderlich ist, aber kein Wert eingegeben wird.
.typeMismatch
- Gibt true
zurück, wenn der Wert nicht die richtige Syntax ist (z. B. eine missgebildete E -Mail -Adresse).
.patternMismatch
- Gibt pattern
zurück, wenn der Wert nicht mit dem regulären Ausdruck des true
-attributs übereinstimmt.
.tooLong
- Gibt maxlength
zurück, wenn der Wert länger als der zulässige true
ist.
.tooShort
- Gibt minlength
zurück, wenn der Wert kürzer ist als der zulässige true
.
.rangeUnderflow
- Wenn der Wert niedriger als min
ist, return true
.
.rangeOverflow
- Wenn der Wert höher als max
ist, return true
.
.stepMismatch
- Wenn der Wert nicht mit step
übereinstimmt, return true
.
.badInput
- Wenn der Eintrag nicht in einen Wert konvertiert werden kann, gibt er true
zurück.
.customError
- Gibt true
zurück, wenn ein benutzerdefinierter Fehler im Feld festgelegt ist. .valid
oder .checkValidity()
ausreichen, um die Fehlermeldung anzuzeigen oder auszublenden.