对于<input type="number">
元素,maxlength
不起作用.如何限制该maxlength
数字元素?
如何在HTML5 input[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);
}
});
Run Code Online (Sandbox Code Playgroud)
我知道不支持maxlength属性,但我用它来获取给定的长度.
上面的代码在firefox中工作正常,但在chrome和safari中它只有在我输入五个"VALID"字符时才有效.当我开始输入任何无效字符时,例如"a","b"等,我可以输入更多字母,文本框颜色变为红色.
我发现当输入变为无效时,$field.val()
返回总是空字符串和$field.val().length
返回0
.
我甚至尝试将keyCode转换为用于输入的字符并将其存储在输入框的"data-value"属性中以检查并覆盖输入的值,但它似乎不可靠.
是否有任何解决方案可以使我的input[type=number]
行为相同input[type=text][maxlength=5]
?
我喜欢最大长度为3的输入.
这些输入值应该只是数字而不是字母.
通过参考这篇文章:为什么<input type ="number"maxlength ="3">在Safari中不起作用?你可以看到我无法使用 <input type="numbers">
那么如何防止text-input-element中的字母呢?
html ×2
html5 ×2
input ×1
jquery ×1
max ×1
numbers ×1
safari ×1
textinput ×1
user-input ×1
validation ×1