Como personalizar a mensagem de erro do maxLength com o jQuery Validate para mostrar o número de caracteres inseridos
-
05-07-2019 - |
Pergunta
eu quero o maxlength
Validação do JQuery Valide para exibir uma mensagem de erro como a seguinte:
"Por favor, digite mais do que {0} caracteres. Você atualmente inseriu {1} caracteres."
Onde {1}
é um espaço reservado pelo valor real. Qual é a melhor forma de fazer isso?
Solução
Eu não acho que exista uma maneira simples de fazer isso, mas encontrei uma solução alternativa para você. Eu acho que você poderia escrever seu próprio validador para esse campo, mas isso pode ser mais simples.
Comece alterando a mensagem padrão para maxlength
erros:
$.extend($.validator.messages, {
maxlength: $.validator.format("Please enter no more than {0} characters. You've currently entered CHARS_NO characters.")
});
Mantenha a validação como de costume, mas adicione esta função:
$('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;
}
});
Aqui está o Demoção de trabalho para voce.
Outras dicas
Não tenho certeza de como você está desencadeando a validação, mas o maxlength
atributo em um input
Exceitará o usuário de inserir mais caracteres do que o que esse valor indica. Portanto, não será necessário informar ao usuário que eles inseriram mais caracteres do que maxlength
já que eles simplesmente não podem fazer isso.
Você pode fornecer contexto e/ou detalhes adicionais?