Como restringir o tamanho do caractere de entrada do usuário do tipo de entrada HTML5 = "number"?

Como faço para restringir a entrada do usuário para um determinado comprimento em um HTML5input[type=number] caixa de texto?

as respostas para

Como posso limitar as possíveis entradas em um elemento "número" de HTML5?

não manipule entradas ilegais

<input class="quantity" type="number" min="0" max="99999" maxlength="5" />

$("quantity").keyup(function(){
    var $field = $(this);
    if ($field.val().length > Number($field.attr("maxlength"))) {
        var value = $field.val().slice(0, 5);
        $field.val(value);
    }
});

Eu sei que o atributo maxlength não é suportado, mas eu o uso para obter o comprimento determinado.

O código acima funciona bem no firefox, mas no chrome e no safari ele funciona somente se eu inserir cinco caracteres "VALID". Quando começo a digitar caracteres inválidos, por exemplo "a", "b" etc., eu posso digitar mais letras e a cor da caixa de texto muda para vermelho.

Eu achei que quando a entrada se torna inválida$field.val() retorna sempre string vazia e$field.val().length devolve0.

Eu até tentei converter o keyCode para caractere destinado a entrada e armazenar em um atributo "data-value" para a caixa de entrada para verificar e sobrescrever o valor da entrada, mas não parece ser confiável.

Existe alguma solução com a qual eu possa fazer ainput[type=number] comportar-se comoinput[type=text][maxlength=5]?

questionAnswers(4)

yourAnswerToTheQuestion