How do I restrict user input to a given length in an HTML5 input[type=number]
textbox?
the answers to
How can I limit possible inputs in a HTML5 "number" element?
do not handle illegal inputs
<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);
}
});
I know the maxlength attribute is not supported, but I use it to obtain the given length.
The above code works fine in firefox, but in chrome and safari it works only if I input five "VALID" characters. When I start typing any invalid characters, e.g. "a", "b" etc., I am able to type in more letters and the textbox color changes to red.
I found that when the input becomes invalid the $field.val()
returns always empty string and the $field.val().length
returns 0
.
I even tried converting the keyCode to character intended to input and store it in a "data-value" attribute to the input box to check against and overwrite the value of the input but it didn't seem to be reliable.
Is there any solution with which I can make the input[type=number]
behave same as input[type=text][maxlength=5]
?