我有点难以弄清楚如何只允许用户在<input type="number" />
中输入数字0-9,因为它还包括eE.+ -
等其他内容。
在这里查看堆栈溢出的正则表达式解决方案,每个似乎都有问题,即如果输入中没有数字,您可以键入任何不需要的字符,如果您键入数字,则无法完全删除它因为需要至少1位数。
使用密钥代码会引发一个问题,因为event.target.value
无法在关键事件中使用,它似乎仅在onchange
中可用,但在这种情况下,e.which
无法检查按键是否可用
答案 0 :(得分:1)
您的意思是您只希望用户能够输入数字0-9吗?
var input = document.getElementById("only-digits");
input.onkeydown = function(e) {
if (48 > e.which || e.which > 57)
if (e.key.length === 1)
e.preventDefault();
};
&#13;
<input type="number" id="only-digits">
&#13;
我确保使用the key the user presses值的范围确保ASCII只是0,1,2,... 9个字符。
如果他们按下的键超出了该范围,那么我确保它是一个单词字符,然后我阻止它进入文本字段。
答案 1 :(得分:0)
您可以在html输入字段中使用regex属性:
<input pattern="[0-9]*">
这仅允许0-9个字符,零次或多次
<input pattern="[0-9]+">
这仅允许0-9个字符,1个或多个
它不适用于type =“number”但是,如果你想要它可以使用它,你需要使用javascript。请参阅其他答案。
答案 2 :(得分:0)
您可以在用户输入数字
以外的任何字符时阻止用户请参阅以下代码 HTML
<input type=number class="numberOnlyInput" oncopy="return false" onpaste="return false" ondrag="return false">
JQuery的
$(document).on('keypress','.numberOnlyInput',function(e){
if(!(e.keyCode >=48 && e.keyCode <=57) ){
e.preventDefault();
}
});
您可以在此处查看演示: https://jsfiddle.net/cnosh74e/