我正在尝试验证用户输入以确保他们输入的内容(如果有的话 - 不需要字段)是一个数字。现在我不在乎这个数字是多少,但它必须是一个整数。消极的,积极的,无论以后验证什么。到目前为止,这是我的测试样本:
var a=["",0,"0",-2,"-2",2,"2",-2.2,"-2.2",2.2,"2.2",-1,"-1",undefined,null,NaN,Infinity,-Infinity],x;
for(x=0;x<a.length;x++){
console.log(a[x],(isNaN(+a[x]) || Math.round(+a[x]) != +a[x] || +a[x] === null || +a[x]+1==+a[x])?false:true);
}
如果您在控制台中运行它,它会为 a 中将通过验证的任何元素显示为 true,否则为 false。此验证在 Chrome 中按预期工作(false
显示所有小数,以及undefined
以后的所有内容。
我的问题是,这是否适用于所有主要浏览器(包括 IE 6+),并且我是否已针对所有可能的输入进行了全面检查?
作为说明:
+
用于a[x]
类型转换(以及修剪字符串 -" 2 "
被转换为2
.最后一项检查
+a[x]+1===+a[x]
是针对(+/-)Infinity
.
谢谢 :) 。