如何在 HTML5input[type=number]
文本框中将用户输入限制为给定长度?
答案
不处理非法输入
<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);
}
});
我知道不支持 maxlength 属性,但我使用它来获取给定的长度。
上面的代码在 firefox 中运行良好,但在 chrome 和 safari 中,它只有在我输入五个“VALID”字符时才有效。当我开始输入任何无效字符时,例如“a”、“b”等,我可以输入更多字母并且文本框颜色变为红色。
我发现当输入变得无效时,$field.val()
返回总是空字符串和$field.val().length
返回0
。
我什至尝试将 keyCode 转换为旨在输入的字符并将其存储在输入框的“数据值”属性中以检查并覆盖输入的值,但它似乎并不可靠。
有什么解决方案可以让我的input[type=number]
行为与input[type=text][maxlength=5]
?