仅允许输入类型中的0-9个数字=“数字”(不包括eE。+ - 等...)

时间:2017-01-18 09:29:21

标签: javascript html

我有点难以弄清楚如何只允许用户在<input type="number" />中输入数字0-9,因为它还包括eE.+ -等其他内容。

在这里查看堆栈溢出的正则表达式解决方案,每个似乎都有问题,即如果输入中没有数字,您可以键入任何不需要的字符,如果您键入数字,则无法完全删除它因为需要至少1位数。

使用密钥代码会引发一个问题,因为event.target.value无法在关键事件中使用,它似乎仅在onchange中可用,但在这种情况下,e.which无法检查按键是否可用

3 个答案:

答案 0 :(得分:1)

您的意思是您只希望用户能够输入数字0-9吗?

&#13;
&#13;
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;
&#13;
&#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/