450 votes

Attribut HTML5 de forme requis. Définir un message de validation personnalisé?

J'ai la suite de HTML5 forme: http://jsfiddle.net/nfgfP/

Actuellement, quand j'appuie sur entrer quand ils sont à la fois vide une boîte de pop-up apparaît disant: "Veuillez remplir le champ" comment pourrais-je le changer que de message par défaut à "Ce champ ne peut être vide"?

EDIT: à noter Aussi que le type de champ mot de passe du message d'erreur est tout simplement *****. Pour recréer ce donner le nom d'utilisateur une valeur et cliquez sur envoyer.

EDIT: je suis en utilisant google Chrome 10 pour les tests. Merci de faire de même

481voto

Somnath Kadam Points 487

Voici un code qui gère le message d'erreur personnalisé dans HTML5

 <input type="text" id="username" required placeholder="Enter Name"
    oninvalid="this.setCustomValidity('Enter User Name Here')"
    oninput="setCustomValidity('')"  />
 

C'est la partie la plus importante:

     oninput="setCustomValidity('')"
 

337voto

robertc Points 35382

Utiliser setCustomValidity:

document.addEventListener("DOMContentLoaded", function() {
    var elements = document.getElementsByTagName("INPUT");
    for (var i = 0; i < elements.length; i++) {
        elements[i].oninvalid = function(e) {
            e.target.setCustomValidity("");
            if (!e.target.validity.valid) {
                e.target.setCustomValidity("This field cannot be left blank");
            }
        };
        elements[i].oninput = function(e) {
            e.target.setCustomValidity("");
        };
    }
})

J'ai changé à la vanille JavaScript à partir de Mootools comme suggéré par itpastorn dans les commentaires, mais vous devriez être en mesure de travailler sur la Mootools équivalent si nécessaire.

--edit

J'ai mis à jour le code ici comme setCustomValidity fonctionne légèrement différemment de ce que j'ai compris quand j'ai d'abord répondu. Si setCustomValidity est réglé sur autre chose que la chaîne vide, il fera le champ pour être considéré comme non valide; par conséquent, vous devez la désactiver avant de tester la validité, vous ne pouvez pas régler et oublier.

--modifier

Comme l'a souligné @thomasvdb de commentaire ci-dessous, vous devez effacer la coutume de validité dans certains cas à l'extérieur de l' invalid sinon il peut y avoir un supplément de passer à travers l' oninvalid gestionnaire de l'effacer.

115voto

Ashwini Jain Points 241

Il est très simple de contrôler les messages personnalisés à l'aide de HTML5 événement oninvalid

Voici le code:

 <input id="UserID"  type="text" required="required"
       oninvalid="this.setCustomValidity('Witinnovation')">
 

71voto

kzh Points 5098

Si vous vous sentez que la validation de la chaîne de vraiment ne doit pas être définie par le code, vous pouvez définir vous de l'élément d'entrée attribut title de lire "Ce champ ne peut être vide". (Fonctionne dans Chrome 10)

title="This field should not be left blank."

Voir http://jsfiddle.net/kaleb/nfgfP/8/

Et dans Firefox, vous pouvez ajouter cet attribut:

x-moz-errormessage="This field should not be left blank."

Modifier

Cela semble avoir changé depuis l'origine, j'avais écrit cette réponse. Maintenant l'ajout d'un titre ne change pas la validité du message, il ajoute juste un additif pour le message. Le violon ci-dessus s'applique toujours.

43voto

hleinone Points 2367

J'ai créé une petite bibliothèque pour faciliter la modification et la traduction des messages d'erreur. Vous pouvez même modifier les textes par type d'erreur qui n'est actuellement pas disponible en utilisant title dans Chrome ou x-moz-errormessage dans Firefox. Allez le vérifier sur GitHub et donnez votre avis.

Il est utilisé comme:

 <input type="email" required data-errormessage-value-missing="Please input something">
 

Il y a une démo disponible à jsFiddle .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X