Formulaires HTML5: JavaScript et API de validation de contraintes
Feb 21, 2025 am 10:03 AM
Points de base
- HTML5 permet la vérification du formulaire client d'être sans codage JavaScript, mais pour des formulaires plus complexes, les API de vérification JavaScript et de contrainte peuvent être utilisées pour améliorer la validation native. Cela est d? à certaines limitations, telles que tous les navigateurs ne prennent pas en charge tous les types d'entrée HTML5 et les sélecteurs CSS, et il est difficile de styliser la bulle de message d'erreur. L'API de vérification de contraintes
- fournit certaines méthodes et propriétés telles que
.willValidate
,.checkValidity()
,.validity
et.setCustomValidity()
. Ceux-ci sont utilisés pour vérifier si les champs seront vérifiés, les champs seront vérifiés, la validité des champs et le message de validité personnalisé sera défini. Cependant, tous les attributs ne sont pas pris en charge par tous les navigateurs. - Un système de vérification de formulaire transversal simple et universel peut être créé à l'aide d'API JavaScript et de vérification des contraintes. Ce système comprend la désactivation de la vérification native, la boucle dans tous les champs pour vérifier si la vérification native est disponible et si le type d'entrée est pris en charge, la vérification de la validité du champ et la définition d'un message de validité personnalisé. Ce système peut être adapté pour prendre en charge les anciens navigateurs et différents types d'entrée.
Cet article est le dernier d'une série en trois parties sur les formulaires Web HTML5, et nous discuterons de l'API d'intégration JavaScript et de vérification des contraintes. Si vous n'avez pas lu les articles Tagged et CSS, lisez-le d'abord pour vous assurer que vous connaissez ces concepts. HTML5 nous permet d'implémenter la validation du formulaire client sans aucun code JavaScript. Cependant, lors de la mise en ?uvre de formes plus complexes, nous devons améliorer la validation native car:
- Tous les navigateurs ne prennent pas en charge tous les types d'entrée HTML5 et les sélecteurs CSS; Les bulles de message d'erreur utilisent du texte commun ("Veuillez remplir ce champ") et sont difficiles à coiffer; Les styles
- et
- sont appliqués lorsque la page est chargée avant que l'utilisateur n'interagit avec le formulaire.
:invalid
:required
Certaines API de code JavaScript et de vérification des contraintes peuvent améliorer l'expérience utilisateur. Notez que cela peut devenir un peu désordonné si vous souhaitez prendre en charge une variété de navigateurs et de types d'entrée, et nous travaillerons dur pour ce faire.
Soumission de formulaire d'interception
Avant HTML5, la vérification du client implique de fixer un gestionnaire de soumission à un formulaire qui vérifiera le champ, affichera une erreur et bloquera les événements de soumission. Dans HTML5, le navigateur effectuera d'abord sa propre vérification - l'événement de soumission ne sera déclenché que lorsque le formulaire est valide. Donc, si vous voulez faire quelque chose de compliqué, comme afficher vos propres champs d'erreur, de comparaison ou de remplissage automatique, vous devez désactiver la vérification native en définissant la propriété
du formulaire à: noValidate
true
var form = document.getElementById("myform"); form.noValidate = true; // 設置處理程序以在提交時驗證表單 // onsubmit 用于更輕松的跨瀏覽器兼容性 form.onsubmit = validateForm;
Field
Propriétés Chaque champ de saisie a un attribut , qui traversera tous les champs et vérifiera si la vérification native est disponible:
! Nous savons maintenant que le code à l'intérieur du premier bloc de code sera évalué lorsqu'il peut être utilisé avec la validation native. Mais ...
Si vous lisez la première partie, vous vous souviendrez que les types d'entrée qui ne sont pas pris en charge retombent au texte. Par exemple:
Aucun support natif dans Firefox 29 ou IE11. Ces navigateurs rendront (efficacement): Cependant, les deux navigateurs prennent en charge la vérification du type de texte, donc correspondent aux attributs
. Il existe également une méthode Les objets ont les propriétés suivantes: Toutes les propriétés ne sont pas prises en charge par tous les navigateurs, alors veillez à ne pas faire trop d'hypothèses. Dans la plupart des cas, le résultat de (Le contenu ultérieur est le même que le texte d'origine, et la longueur est trop longue, il est donc omis ici. Veuillez ajuster la longueur et les détails du contenu de sortie vous-même selon les besoins.) Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!.willValidate
.willValidate
. Cela reviendra:
. Créons notre gestionnaire true
: Lorsque le navigateur place le champ de vérification natif;
false
undefined
false
validateForm
La boucle itérates représente tous les champs dans une seule collection var form = document.getElementById("myform");
form.noValidate = true;
// 設置處理程序以在提交時驗證表單
// onsubmit 用于更輕松的跨瀏覽器兼容性
form.onsubmit = validateForm;
elements
function validateForm(event) {
// 獲取跨瀏覽器事件對象和表單節(jié)點
event = (event ? event : window.event);
var
form = (event.target ? event.target : event.srcElement),
f, field, formvalid = true;
// 循環(huán)所有字段
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 {
// 原生驗證不可用
}
}
}
sont les deux de fausses valeurs, vous ne pouvez donc pas simplement vérifier false
undefined
field.willValidate
Le navigateur prend-il en charge les types d'entrée? // 原生瀏覽器驗證可用嗎?
if (typeof field.willValidate !== "undefined") {
// 原生驗證可用
}
else {
// 原生驗證不可用
}
<input type="date" name="dob" />
! Par conséquent, nous devons vérifier si nos attributs field.willValidate
de l'objet - s'ils ne correspondent pas, nous devons implémenter la vérification de secours héritée, par exemple: undefined
type
.type
<input type="text" name="dob" />
Méthode .checkValidity()
Si une vérification native est disponible, vous pouvez exécuter la méthode pour vérifier le champ. S'il n'y a pas de problème, la méthode renvoie .checkValidity()
similaire qui renvoie l'état actuel sans rechapage, bien que cela ne soit pas très utile et n'est pas pris en charge par tous les navigateurs. Ces deux méthodes seront également: true
false
.reportValidity()
Définissez l'objet Lorsque la vérification échoue, l'événement
.validity
correspondant, alors n'oubliez pas de réinitialiser le style d'erreur et le message si nécessaire. invalid
valid
champ .validity
.valid
- Renvoie true
s'il n'y a pas d'erreur dans le champ, sinon renvoie false
.
.valueMissing
- Renvoie true
Si le champ est requis mais qu'aucune valeur n'est saisie.
.typeMismatch
- Renvoie true
Si la valeur n'est pas la syntaxe correcte (par exemple, une adresse e-mail mal formée).
.patternMismatch
- Renvoie pattern
Si la valeur ne correspond pas à l'expression régulière de l'attribut true
.
.tooLong
- Renvoie maxlength
si la valeur est plus longue que le permis true
.
.tooShort
- Renvoie minlength
si la valeur est plus courte que le permis true
.
.rangeUnderflow
- Si la valeur est inférieure à min
, retournez true
.
.rangeOverflow
- Si la valeur est supérieure à max
, retournez true
.
.stepMismatch
- Si la valeur ne correspond pas à step
, retournez true
.
.badInput
- Si l'entrée ne peut pas être convertie en valeur, elle renvoie true
.
.customError
- Renvoie true
Si une erreur personnalisée est définie dans le champ. .valid
ou .checkValidity()
devrait être suffisant pour afficher ou masquer le message d'erreur.

Outils d'IA chauds

Undress AI Tool
Images de déshabillage gratuites

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

Article chaud

Outils chauds

Bloc-notes++7.3.1
éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Java et JavaScript sont différents langages de programmation, chacun adapté à différents scénarios d'application. Java est utilisé pour le développement des grandes entreprises et des applications mobiles, tandis que JavaScript est principalement utilisé pour le développement de pages Web.

JavaScriptCommentsaSententialFormantaining, Reading et GuidingCodeEexecution.1) unique-linecomesaUSEUSEFORQUICKEXPLANATIONS.2) Multi-linecommentSExPlainComplexLogicorProvideTailedDocumentation.3) Inlinecomementsclarifypecifications

Les points suivants doivent être notés lors du traitement des dates et du temps dans JavaScript: 1. Il existe de nombreuses fa?ons de créer des objets de date. Il est recommandé d'utiliser les cha?nes de format ISO pour assurer la compatibilité; 2. Get and définir des informations de temps peuvent être obtenues et définir des méthodes, et notez que le mois commence à partir de 0; 3. Les dates de mise en forme manuelle nécessitent des cha?nes et les bibliothèques tierces peuvent également être utilisées; 4. Il est recommandé d'utiliser des bibliothèques qui prennent en charge les fuseaux horaires, comme Luxon. La ma?trise de ces points clés peut éviter efficacement les erreurs courantes.

PlacertagsatthebottomofablogPostorwebPageSerSpracticalPurpossForseo, userexperience, anddesign.1.ithelpswithseobyallowingsechingenginestoaccesskeyword-elevanttagswithoutcluteringtheaincontent..itimproveserexperceenceegmentyepingthefocusonThearrlUl

Javascriptispreferredforwebdevelopment, tandis que javaisbetterforlarge-scalebackenSystemsandandroidApps.1)

JavascripthSsevenfundamentalDatatypes: nombre, cha?ne, booléen, indéfini, nul, objet, andymbol.1) nombres usUseadouble-précisformat, utile

La capture d'événements et la bulle sont deux étapes de la propagation des événements dans DOM. La capture est de la couche supérieure à l'élément cible, et la bulle est de l'élément cible à la couche supérieure. 1. La capture de l'événement est implémentée en définissant le paramètre UseCapture d'AdveventListener sur true; 2. événement Bubble est le comportement par défaut, UseCapture est défini sur False ou Omise; 3. La propagation des événements peut être utilisée pour empêcher la propagation des événements; 4. événement Bubbling prend en charge la délégation d'événements pour améliorer l'efficacité du traitement du contenu dynamique; 5. La capture peut être utilisée pour intercepter les événements à l'avance, telles que la journalisation ou le traitement des erreurs. La compréhension de ces deux phases aide à contr?ler avec précision le calendrier et comment JavaScript répond aux opérations utilisateur.

Java et JavaScript sont différents langages de programmation. 1.Java est un langage typique et compilé, adapté aux applications d'entreprise et aux grands systèmes. 2. JavaScript est un type dynamique et un langage interprété, principalement utilisé pour l'interaction Web et le développement frontal.
