0

我正在尝试验证用户输入以确保他们输入的内容(如果有的话 - 不需要字段)是一个数字。现在我不在乎这个数字是多少,但它必须是一个整数。消极的,积极的,无论以后验证什么。到目前为止,这是我的测试样本:

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.

谢谢 :) 。

4

1 回答 1

0

试试这个功能

function is_int(value){
   if((parseFloat(value) == parseInt(value)) && !isNaN(value)){
      alert("Is an Integer");
     } else {
      alert("Is not an Integer");
     }
   }

is_int(1); //Output - Is an Integer
is_int("a"); //Output - Is not an Integer
于 2012-09-06T18:41:52.160 回答