Existe-t-il un moyen d'exiger que les entrées de deux champs de formulaire correspondent à l'aide de HTML5? Ou est-ce que cela doit encore être fait avec javascript? Par exemple, si vous avez deux champs de mot de passe et que vous voulez vous assurer qu'un utilisateur a entré les mêmes données dans chaque champ, y a-t-il des attributs, ou un autre codage qui peut être fait, pour y parvenir?
98
Réponses:
Pas exactement avec la validation HTML5 mais un peu de JavaScript peut résoudre le problème, suivez l'exemple ci-dessous:
la source
oninput="check(this)"
au premier champ de mot de passe et 2) en changeantinput.value
la fonction endocument.getElementById('password_confirm').value
. Alors ça devientif (document.getElementById('password_confirm').value != document.getElementById('password').value)
Vous pouvez avec des expressions régulières Modèles d'entrée (vérifier la compatibilité du navigateur )
la source
pattern
attribut doit être omis pour lepassword_two
champ. Comme actuellement, si vous tapez un mot de passe, qui est plus court que 6 caractères dans lepassword_two
champ, tout en laissantpassword
vide - il affichera unPlease enter the same Password as above
message de validation. Ce qui pourrait être plus déroutant: la même chose se produit si vous mettez dans les deux champs exactement le même mot de passe, qui est plus court que 6 caractères.Une solution simple avec un javascript minimal consiste à utiliser le modèle d'attribut html (pris en charge par la plupart des navigateurs modernes). Cela fonctionne en définissant le modèle du deuxième champ sur la valeur du premier champ.
Malheureusement, vous devez également échapper à l'expression régulière, pour laquelle aucune fonction standard n'existe.
la source
<input type="password" name="password" oninput="document.getElementById('confirm').pattern = this.value.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, '\\$&')" required><input type="password" id="confirm" name="confirm" pattern="" title="Fields must match" required>
non lisible comme le vôtre, mais évite le script / fonction séparé.JavaScript sera nécessaire, mais la quantité de code peut être réduite au minimum en utilisant un
<output>
élément intermédiaire et unoninput
gestionnaire de formulaire pour effectuer la comparaison (les modèles et la validation pourraient augmenter cette solution, mais ne sont pas affichés ici pour des raisons de simplicité):la source
Non seulement HTML5 mais un peu de JavaScript
Cliquez [ici] https://codepen.io/diegoleme/pen/surIK
HTML
JAVASCRIPT
la source
Les réponses qui utilisent un modèle et une expression régulière écrivent le mot de passe de l'utilisateur dans les propriétés d'entrée sous forme de texte brut
pattern='mypassword'
. Cela ne sera visible que si les outils de développement sont ouverts, mais cela ne semble toujours pas une bonne idée.Un autre problème avec l'utilisation de pattern pour vérifier une correspondance est que vous voudrez probablement utiliser pattern pour vérifier que le mot de passe est de la bonne forme, par exemple des lettres et des chiffres mixtes.
Je pense également que ces méthodes ne fonctionneront pas bien si l'utilisateur bascule entre les entrées.
Voici ma solution qui utilise un peu plus de JavaScript, mais effectue une simple vérification d'égalité lorsque l'une des entrées est mise à jour, puis définit une validité HTML personnalisée. Les deux entrées peuvent toujours être testées pour un modèle tel que le format d'e-mail ou la complexité du mot de passe.
Pour une vraie page, vous changeriez les types d'entrée en «mot de passe».
la source
Comme cela a été mentionné dans d'autres réponses, il n'y a pas de moyen purement HTML5 de le faire.
Si vous utilisez déjà JQuery , cela devrait faire ce dont vous avez besoin:
la source