我目前正在做一个项目,我需要检查用户是否输入了一个数值。当他输入一个以小数点 ( .20
) 开头的数字时,问题就来了。我一直在寻找解决方案,但现在我放弃了。isNaN 或 isNumeric 都不起作用。还尝试检查 like: if(value > 0)
,但这仅在用户输入前导零时有效。任何帮助将不胜感激!提前致谢!
已解决: isNaN 对我不起作用,因为我使用 parseInt() 而不是 parseFloat()。现在一切正常。我希望管理员原谅我提出的愚蠢问题!现在可以删除此线程。
我目前正在做一个项目,我需要检查用户是否输入了一个数值。当他输入一个以小数点 ( .20
) 开头的数字时,问题就来了。我一直在寻找解决方案,但现在我放弃了。isNaN 或 isNumeric 都不起作用。还尝试检查 like: if(value > 0)
,但这仅在用户输入前导零时有效。任何帮助将不胜感激!提前致谢!
已解决: isNaN 对我不起作用,因为我使用 parseInt() 而不是 parseFloat()。现在一切正常。我希望管理员原谅我提出的愚蠢问题!现在可以删除此线程。
工作演示http://jsfiddle.net/sPt7q/1
利用
if(parseFloat(n) > 0){}
js在小提琴
var n = '.2';
if (n > 0) {
alert(n);
}
if(parseFloat(n) > 0){
alert(parseFloat(n));
}
尝试
function isInt(n) {
return typeof n === 'number' && n % 1 == 0;
}
不过,这确实在 0.0 上失败了。
一种更好且更简单的方法是使用正则表达式:
var reg = new RegExp('^[1-9]\d*(\.\d+)?$');
或者
var reg = new RegExp('^[1-9]\d*(\.\d+)?$');
用户输入将是一个字符串(来自表单字段)。对照这个正则表达式检查那个字符串,这应该可以工作。
例子:
if(reg.test(userInput)) {
//returns true
} else {
//returns false
}
尝试这个:
var val = .21;
if (!isNaN(val) && val.toString().indexOf('.') == -1) {
console.log('valid number:' + val);
} else {
console.log('invalid number: ' + val);
}