如何检查用户输入是否为数字?

4

我想检查用户输入是否为数字;'input'来自html输入标签。我提供了以下代码。我不明白为什么我的代码不起作用,任何帮助都将不胜感激。

document.getElementById('input').addEventListener("input",
function(){
  var userInput = document.getElementById('input').value;
  if(!isNaN(userInput)){
    alert("Is a number");
  }
  else{
    alert("Is not a number");
  }

},true);
User Input : <input id="input">


1
<input type='number'> 有帮助吗? - superK
执行 console.log(document.getElementById('input').value) 以查看结果。 - Akber Iqbal
4
可能是 检查输入是否为数字或字母 JavaScript 的重复问题。 - Prabhakaran Ramaswamy
使用 typeof 获取表示类型的字符串 - Elish
@Prabhakaran,这个问题的答案与您提供的帖子不同。我认为保留这篇文章会有益处。话虽如此,我仍然不熟悉StackOverflow的“礼仪”;如果我应该删除这篇文章,请告诉我。 - Ayma
5个回答

4

你可以使用 typeof

var userInput = document.getElementById('input').value;
if(typeof userInput == 'number')){
  console.log("Is a number");
}else{
  console.log("Is not a number");
}

感谢您的回答。这是在不改变太多代码的情况下实现结果的最简单方法。 - Ayma
这里只是一个小问题。typeof NaN === 'number'。阅读更多:https://dev59.com/53E85IYBdhLWcg3wYicB - Ahmad Maleki

2

像这样尝试一下。

function validate(){
  var userInput = document.getElementById('input').value;
  if(!isNaN(userInput)){
    console.log("Is a number");
  }else{
    console.log("Is not a number");
  }
}
<html>
<body>
<input type="text" id="input" onchange="validate()">
</body>
</html>


2

这里已经有很多好的答案了,但我认为另一种方法是将字符串与0进行比较,如下所示:

"string" >= 0 || "string" <= 0

只有在它是一个数字时,它才会返回true。但问题在于,如果它是一个空字符串,它也会返回true。因此,如果您确定用户输入至少一个字符/数字或已处理空输入情况,则可以使用它。


1
我可能在这里漏掉了什么,但是'1'>=0 && '1'<=01>=0 && 1<=0都是false。你的意思是"string">=0 || "string"<=0吗? - Ahmad Maleki

1
<input type="text" onkeypress='return event.charCode >= 48 && event.charCode <= 57'>

只接受数字。


1
用户输入不一定要通过键盘。如果他“复制并粘贴”了什么呢? - Ahmad Maleki
1
你是对的Ahmad Maleki... isNaN必须是答案。 - suleymanduzgun
isNan或typeOf必须是答案。 - suleymanduzgun

1
您可以使用 typeof 进行验证。
> a = 10
10
> typeof a
'number'

> if(typeof a === 'number') { console.log("Number") } else { console.log("Not a Number") }
Number
undefined
>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接