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]
?