将文本输入验证为数字 - JavaScript

时间:2012-09-06 18:17:43

标签: javascript numbers validation

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

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);
}

如果在控制台中运行它,则对于将通过验证的任何元素显示为true,否则为false。此验证在Chrome中按预期工作(false显示所有小数,以及undefined以后的所有内容。

我的问题是,这是否适用于所有主流浏览器(包括IE 6+),并且我是否完全针对每个可能的输入进行了检查?

作为说明:

    +前面使用
  • a[x]进行类型转换(以及修剪字符串 - " 2 "转换为2

  • 最后一次检查+a[x]+1===+a[x]是对(+/-)Infinity的检查。

谢谢:)。

1 个答案:

答案 0 :(得分: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
相关问题