Création de remplacements de bulles de validation de formulaire HTML5
J'ai écrit et sur au sujet de la validation de formulaires au cours des dernières années au format HTML5, et l'une des questions les plus courantes que je reçois concerne les bulles. Par bulles, j'entends les contrôles de l'interface utilisateur dans lesquels les navigateurs affichent des erreurs de validation. Vous pouvez voir ci-dessous les implémentations de Chrome, Firefox et IE:
Quelle que soit la raison, nos développeurs (ou plus probablement nos collègues concepteurs) ont Assis désir de coiffer ces choses. Mais malheureusement, nous ne pouvons pas, car aucun navigateur ne fournit de crochets de style qui ciblent ces bulles. Chrome utilisé pour fournir une série de pseudo-éléments préfixés par le fournisseur ( :: - webkit-validation-bubble - *
), mais ont été supprimés. dans Chrome 28 .
Alors, que doit faire un développeur? Bien que les navigateurs ne vous autorisent pas à personnaliser leurs bulles, la spécification de validation de contrainte vous permet de supprimer l'interface utilisateur de la bulle du navigateur et de créer la vôtre. Le reste de l’article vous montre comment faire exactement cela.
Avertissement: Ne vous engagez pas dans la construction d’un remplacement de bulle. Avec les bulles par défaut, vous obtenez gratuitement des fonctionnalités assez complexes, telles que le positionnement et l'accessibilité. Avec les bulles personnalisées, vous devez résoudre vous-même ces problèmes (ou utiliser une bibliothèque qui le fait).
Suppression des bulles par défaut
La première étape de la création d'une interface utilisateur personnalisée consiste à supprimer les bulles natives. Vous faites cela en écoutant l'événement invalide
de chaque contrôle de formulaire et en empêchant son comportement par défaut. Par exemple, le formulaire suivant n'utilise pas de bulles de validation en raison de l'appel event.preventDefault ()
dans le gestionnaire d'événements invalide
.
L'événement invalide
ne bouillonne pas (sans jeu de mots), donc si vous voulez empêcher les bulles de validation sur plusieurs éléments, vous devez associer un écouteur en phase de capture.
Si vous êtes confus. sur la différence entre les phases de bouillonnement et de capture des événements DOM, consultez cet article de MDN pour une assez bonne explication.
Le code suivant empêche les bulles sur les deux entrées avec un seul invalide
. ] écouteur d'événement sur l'élément parent
Source link