Como personalizar a mensagem de erro do maxLength com o jQuery Validate para mostrar o número de caracteres inseridos

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

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?

Foi útil?

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?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top