在我的网页上有一个输入框,只允许用户输入正的int / float编号(即1234,123.4,12.34,1.234都应该被允许)。
为了确保该值有效,我有一个函数在将值发送到服务器之前验证该值:
function isPositiveFloat(s){
return String(Number(s)) === s && Math.floor(Number(s)) > 0;
}
该功能对于一种情况非常有用:isPositiveFloat(1.0)
将返回false,因为事实证明Number(1.0)
会将其转换为1
,因此验证失败。
有关如何解决此问题的任何建议?使用正则表达式是唯一的方法吗?
提前感谢您的帮助!
答案 0 :(得分:0)
您只需使用!isNaN(s)
和Number(s)>0
:
function isPositiveFloat(s) {
return !isNaN(s) && Number(s) > 0;
}
<强>演示:强>
function isPositiveFloat(s) {
return !isNaN(s) && Number(s) > 0;
}
<input type="text" onchange="console.log(isPositiveFloat(this.value))" />
您可以查看以下MDN reference of isNaN()
示例:
isNaN('37 0.37' ); // false:“37.37”被转换为数字37.37,而不是NaN
所以你可以看到它会在你的情况下使用浮点数。