La faible adoption de la validation des formulaires HTML
- Les formulaires HTML disposent d’un mécanisme de validation puissant, mais il est peu utilisé. Beaucoup de personnes le connaissent mal. Cela peut être dû à un défaut de conception.
Attributs, méthodes et propriétés
- Il est possible d’ajouter l’attribut
required pour empêcher une saisie vide.
- Il existe trois façons d’ajouter des contraintes à une saisie :
- utiliser certaines valeurs spécifiques de l’attribut
type : "email", "number", "url"
- utiliser d’autres attributs de champ comme
"pattern" ou "maxlength"
- utiliser la méthode DOM
setCustomValidity : c’est la méthode la plus puissante pour créer une logique de validation arbitraire et gérer des cas complexes.
Les subtilités de l’API impérative
- L’API
setCustomValidity n’est proposée que sous forme de méthode, ce qui la rend peu pratique à utiliser.
- Par exemple, elle permet d’implémenter un comportement équivalent à l’attribut
required afin d’empêcher l’envoi du formulaire lorsque le champ est vide.
- Si le champ est vide lors du rendu initial, il faut le définir comme invalide.
Le problème du boilerplate
- La manière de valider la valeur initiale est fastidieuse.
- La logique de validation est dupliquée entre le gestionnaire
onChange et l’étape de rendu initial.
- La combinaison
useRef + useLayoutEffect + onChange est complexe.
Ce qui manque
- Un attribut
custom-validity est nécessaire.
- Dans les frameworks déclaratifs, il permettrait de définir puissamment la validation des champs.
La puissance de la validation asynchrone
- Il est possible de gérer le cas où un nom d’utilisateur n’est valide que s’il n’est pas déjà utilisé.
- Cela nécessite un appel asynchrone au serveur ainsi qu’un état intermédiaire.
Implémentation
- La fonction
verifyUsername est utilisée pour vérifier l’unicité du nom d’utilisateur.
useQuery est utilisé pour gérer l’état des requêtes serveur.
- La propriété
customValidity est utilisée pour décrire le flux de validation asynchrone.
Formulaire de confirmation du mot de passe
- Un formulaire est implémenté dans lequel le mot de passe saisi doit être répété.
- La validation vérifie que les deux champs correspondent.
Conclusion
setCustomValidity peut répondre à divers besoins de validation.
- Une API puissante apporte une vraie capacité d’expression.
- On peut espérer que cette fonctionnalité soit ajoutée à la spécification HTML.
Résumé de GN⁺
- La validation des formulaires HTML est puissante, mais reste mal exploitée. Cela peut être lié à la complexité de l’API.
- La méthode
setCustomValidity est un outil puissant pour gérer une logique de validation complexe.
- L’article présente une manière de traiter des scénarios complexes comme la validation asynchrone.
- Ce texte fournit des informations utiles pour aider les développeurs à mieux exploiter la validation des formulaires HTML.
1 commentaires
Avis Hacker News
Les navigateurs web ne permettent toujours pas de modifier le style des messages de validation HTML intégrés, et Chrome comme Firefox ne suivent pas les directives UI des plateformes OS, ce qui entre en conflit avec l’esthétique des projets
<select multiple>L’utilisation de certaines valeurs de l’attribut
type(par ex. "email", "number", "url") peut déclencher le clavier optimal sur mobile et améliorer considérablement l’expérience utilisateurLes personnes qui rédigent les spécifications sont déconnectées de l’usage réel ; c’est adapté aux choses simples, mais pour les formulaires complexes, mieux vaut les écrire soi-même
Regret d’avoir négligé la simplicité fondamentale des formulaires, et remerciements pour le partage d’un autre point de vue
Demande d’ajouter l’attribut "for" aux libellés des cases à cocher afin qu’un clic sur le libellé puisse activer/désactiver la case
Fournit un exemple simple sans utiliser React
La validation des formulaires HTML est excellente, mais il y a un gros problème : elle ne fonctionne pas sur Firefox pour Android
De nombreux frameworks et bibliothèques proposent des fonctions de validation personnalisables en style, donc inutile de se compliquer la vie
Il faut faire attention à ne pas abuser de la validation
Les sites qui utilisent à tort
type=passwordpour la saisie 2FA perturbent les gestionnaires de mots de passe et les navigateurs