我正在尝试执行某些表单验证,出于某种原因,当我在输入字段中输入数字时,它会将typeof显示为字符串。
我真的无法绕过这个。我曾尝试在线研究,但无法找到答案。
任何帮助都会非常感激。下面是我的代码链接到jsfiddle示例。
提前谢谢
https://jsfiddle.net/eldan88/2xb47g78/
<button>Check if number</button>
<input id="number" type="number">
<script>
$("button").click(function () {
var number = $("#number").val();
alert(typeof (number));
if(typeof number !== "number"){
alert("not a number");
}
});
</script>
答案 0 :(得分:4)
这是因为输入的值总是一个字符串。例如,当我输入3
时,实际值不是数字3
,而是字符串"3"
。要检查它是否不是数字,请使用isNaN()
,一个Javascript本机函数来检查某些内容是否不是数字。例如,当您运行isNaN("3")
时,它将返回false
,因为3
是一个数字。
答案 1 :(得分:2)
输入元素的value属性始终存储为字符串,因此typeof始终返回“string”。
https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement
您需要编写自己的自定义函数来确定输入的类型。
答案 2 :(得分:1)
具有type属性值为“number”的input元素表示将元素值设置为表示数字的字符串的精确控件。
http://www.w3.org/TR/html-markup/input.number.html
所以无论如何,输入都包含一个字符串。
答案 3 :(得分:0)
此处w3.org。它提供: -
值 =浮点数#
表示数字的字符串。
答案 4 :(得分:0)
var myVar=5
alert(typeof myVar) //Number
var myVar = "5"
alert(typeof myVar) //String
var myVar = "5"
var vResult = parseInt(myVar);
alert(typeof vResult) //Number
在你的情况下,从文本框返回的是.val(),它总是一个字符串。
答案 5 :(得分:0)
正如其他人所说,HTML输入元素总是将它们的值存储为字符串,即使这些值是“数字字符串”。以下是验证工作的一种方法:
$("button").click(function () {
var number = $("#number").val();
alert(Number(number));
if(isNaN(Number(number))){
alert("not a number");
}
});