我如何检查如果一个变量是一个整数在JavaScript,并抛出一个警告,如果它不是?我试过了,但不管用:
<html>
<head>
<script type="text/javascript">
var data = 22;
alert(NaN(data));
</script>
</head>
</html>
我如何检查如果一个变量是一个整数在JavaScript,并抛出一个警告,如果它不是?我试过了,但不管用:
<html>
<head>
<script type="text/javascript">
var data = 22;
alert(NaN(data));
</script>
</head>
</html>
当前回答
使用时要小心
num % 1
空字符串(")或布尔值(真或假)将返回为整数。你可能不想这么做
false % 1 // true
'' % 1 //true
Number.isInteger(数据)
Number.isInteger(22); //true
Number.isInteger(22.2); //false
Number.isInteger('22'); //false
内置功能在浏览器中。不支持旧浏览器
选择:
Math.round(num)=== num
然而,Math.round()对于空字符串和布尔值也会失败
其他回答
为文本框添加类numOnly,
$(document).on("input", ".numOnly", function(e) {
this.value = this.value.replace(/[^0-9\$]/g,'');
if(this.value!=""){
alert('Integer Number.');
}else{
alert('Not an Integer Number.');
}
});
这对我有用。试试这个
你可以使用键盘,键上,键下等,而不是输入。
接受的答案不为我工作,因为我需要检查int/float和字母。因此,尝试这将工作的int/float和字母检查
function is_int(value){
if( (parseInt(value) % 1 === 0 )){
return true;
}else{
return false;
}
}
使用
is_int(44); // true
is_int("44"); // true
is_int(44.55); // true
is_int("44.55"); // true
is_int("aaa"); // false
Number.isInteger()似乎是可行的方法。
MDN还为不支持Number.isInteger()的浏览器提供了以下填充,主要是所有版本的IE。
链接到MDN页面
Number.isInteger = Number.isInteger || function(value) {
return typeof value === "number" &&
isFinite(value) &&
Math.floor(value) === value;
};
function isInteger(argument) { return argument == ~~argument; }
用法:
isInteger(1); // true<br>
isInteger(0.1); // false<br>
isInteger("1"); // true<br>
isInteger("0.1"); // false<br>
or:
function isInteger(argument) { return argument == argument + 0 && argument == ~~argument; }
用法:
isInteger(1); // true<br>
isInteger(0.1); // false<br>
isInteger("1"); // false<br>
isInteger("0.1"); // false<br>
你可以检查这个数字是否有余数:
var data = 22;
if(data % 1 === 0){
// yes it's an integer.
}
请注意,如果你的输入也可以是文本,你想先检查它不是,那么你可以先检查类型:
var data = 22;
if(typeof data === 'number'){
// yes it is numeric
if(data % 1 === 0){
// yes it's an integer.
}
}