385 votes

Validation jQuery : modifier le message d'erreur par défaut

Existe-t-il un moyen simple de modifier les valeurs d'erreur par défaut dans le système d'information de l'entreprise ? Plugin de validation jQuery ?

Je veux juste réécrire les messages d'erreur pour qu'ils soient plus personnels à mon application - j'ai beaucoup de champs, donc je ne veux pas définir le message individuellement pour le champ x... Je sais que je peux le faire !

776voto

Nick Craver Points 313913

Ajoutez ce code dans un fichier séparé/script inclus après le plugin de validation pour passer outre les messages, à modifier à volonté :)

jQuery.extend(jQuery.validator.messages, {
    required: "This field is required.",
    remote: "Please fix this field.",
    email: "Please enter a valid email address.",
    url: "Please enter a valid URL.",
    date: "Please enter a valid date.",
    dateISO: "Please enter a valid date (ISO).",
    number: "Please enter a valid number.",
    digits: "Please enter only digits.",
    creditcard: "Please enter a valid credit card number.",
    equalTo: "Please enter the same value again.",
    accept: "Please enter a value with a valid extension.",
    maxlength: jQuery.validator.format("Please enter no more than {0} characters."),
    minlength: jQuery.validator.format("Please enter at least {0} characters."),
    rangelength: jQuery.validator.format("Please enter a value between {0} and {1} characters long."),
    range: jQuery.validator.format("Please enter a value between {0} and {1}."),
    max: jQuery.validator.format("Please enter a value less than or equal to {0}."),
    min: jQuery.validator.format("Please enter a value greater than or equal to {0}.")
});

0 votes

@Kevin - Pas vraiment... vous devez au moins définir les variables, ce qui est tout ce que cela fait. Vous pouvez inclure ceci dans la page, dans un autre fichier de type .js ou toute autre méthode que vous souhaitez pour exécuter le script après le plugin pour définir les messages.

36 votes

Ça a bien marché. J'ai juste ajouté : $.extend($.validator.messages, { required : "Required" }) ;

0 votes

Merci, j'oublie toujours d'utiliser extend, je vais peut-être devoir créer mes propres plugins jquery pour le forer !

250voto

Steven Points 2050

Vous pouvez spécifier vos propres messages dans l'appel de validation. J'ai repris et abrégé ce code à partir du formulaire d'inscription de Remember the Milk utilisé dans la documentation du plugin Validation ( http://jquery.bassistance.de/validate/demo/milk/ ), vous pouvez facilement spécifier vos propres messages :

var validator = $("#signupform").validate({
    rules: {
        firstname: "required",
        lastname: "required",
        username: {
            required: true,
            minlength: 2,
            remote: "users.php"
        }
    },
    messages: {
        firstname: "Enter your firstname",
        lastname: "Enter your lastname",
        username: {
            required: "Enter a username",
            minlength: jQuery.format("Enter at least {0} characters"),
            remote: jQuery.format("{0} is already in use")
        }
    }
});

L'API complète pour validate(...) : http://jqueryvalidation.org/validate

7 votes

Merci pour votre contribution, mais si vous lisez la question de plus près, je demande comment modifier les valeurs par défaut. Je sais que je peux spécifier des messages uniques.

42 votes

J'interviens juste pour apporter ma pierre à l'édifice - cela m'a été utile, même si ce n'est pas la question qui nous intéresse.

1 votes

Oui, cela semble être une meilleure idée que de changer les valeurs par défaut, même si c'est ce que le PO avait demandé à l'origine.

98voto

Josh Points 2733

Cela a marché pour moi :

$.validator.messages.required = 'required';

0 votes

$.validator.messages.maxlength = jQuery.validator.format("Please enter no more than {0} characters.") ; ne fonctionne pas. Je suggère d'utiliser la solution de Nick Cravers à la place.

1 votes

@VidarVestnes La solution fonctionne aussi pour votre scénario. Il suffit de spécifier la chaîne de format, et le plugin fait le reste : $.validator.messages.maxlength = "Please enter no more than {0} characters.";

48voto

Mahmoud Fadel Points 81

Cela a marché pour moi :

// Change default JQuery validation Messages.
$("#addnewcadidateform").validate({
        rules: {
            firstname: "required",
            lastname: "required",
            email: "required email",
        },
        messages: {
            firstname: "Enter your First Name",
            lastname: "Enter your Last Name",
            email: {
                required: "Enter your Email",
                email: "Please enter a valid email address.",
            }
        }
    })

0 votes

Notez que même si cette réponse concerne jqueryValidation et non jqueryFileUpload, il y a aussi l'option messages dans les options de l $().fileupload fonction.

23voto

Ganske Points 158

Une autre solution possible consiste à parcourir les champs en boucle, en ajoutant le même message d'erreur à chaque champ.

$('.required').each(function(index) {
  $(this).rules("add", {
    messages: {
      required: "Custom error message."
   }
  });
});

1 votes

Cette solution était exactement ce que je cherchais... dans mon scénario, chaque champ de formulaire a une étiquette, donc je trouve l'étiquette correspondante et je la rajoute au message pour qu'à la fin, il soit écrit "Le prénom est obligatoire". Très bien, Ganske.

1 votes

+1 Bien que toutes les autres réponses soient valables, c'est la syntaxe que je recherchais.

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