Comment personnaliser le message d'erreur de maxlength avec jQuery validate pour afficher le nombre de caractères entrés

StackOverflow https://stackoverflow.com/questions/1206705

Question

Je souhaite que la validation maxlength de jQuery validate affiche un message d'erreur semblable à celui-ci:

" Veuillez ne pas entrer plus de {0} caractères. Vous avez actuellement saisi {1} caractères. & Quot;

{1} est un espace réservé pour le montant réel. Quelle est la meilleure façon de faire cela?

Était-ce utile?

La solution

Je ne pense pas qu'il existe un moyen simple de le faire, mais j'ai trouvé une solution de contournement pour vous. Je suppose que vous pourriez écrire votre propre validateur pour ce champ, mais cela pourrait être plus simple.

Commencez par modifier le message par défaut pour les erreurs maxlength :

$.extend($.validator.messages, {  
    maxlength: $.validator.format("Please enter no more than {0} characters. You've currently entered CHARS_NO characters.")
});

Conservez la validation comme d'habitude, mais ajoutez cette fonction:

$('input').keyup(function () {
    var rules = $(this).rules();
    if (rules.maxlength !== undefined && !$(this).valid()) {
        var errorLabel = $('label[for=' + $(this).attr('id') + '][generated=true].error');
        errorLabel.text(errorLabel.text().replace('CHARS_NO', $(this).val().length));
        return false;
    }
});

Voici la démonstration de travail pour vous.

Autres conseils

Je ne sais pas comment vous déclenchez la validation, mais l'attribut maxlength sur une entrée empêchera l'utilisateur de saisir plus de caractères que ce que cette valeur indique. . Donc, il ne sera pas nécessaire d'informer l'utilisateur qu'il a entré plus de caractères que maxlength car il ne peut simplement pas le faire.

Pouvez-vous fournir un contexte et / ou des détails supplémentaires?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top