我需要验证文本框条目。如果用户在绑定期间输入此字段中的字符,它应该只允许整数,因为实体框架会失败。
这是问题:
当用户在此字段中输入10-d
时,parseFloat
会返回true
,因为它需要10
作为数字并忽略其余值。虽然IMO它应该抛出NAN错误,因为输入文本无法转换为float。
请参阅以下示例,您可以使用它。 http://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_parsefloat
我感兴趣的是在上面的例子中输入NAN 40年。
document.write(parseFloat("40 years") + "<br />");
如果我需要进行更多验证,请与我们联系。
答案 0 :(得分:4)
听起来您想使用isNaN
功能。
isNaN('40'); //false, as '40' is a number
isNaN('40 years'); //true, as '40 years' is not a number
<强>更新强>
如上所述,这不会检查整数。为此,您可以使用
function isInt(value) {
return !isNaN(value) && value % 1 === 0;
}
对于“40”,40,“40”,这将返回true。对于“40-d”,“40.12”,40.12,“40年”而言是假的。
如果你不想要一个尾随小数,那么@ jakeclarkson的正则表达式解决方案更好
答案 1 :(得分:2)
如果您只想允许整数,则可以使用:
function isInteger(str) {
return /^[0-9]*$/.test(str);
}
如果您提供小数, isNaN
将返回false
,即
isNaN("3.14"); // false, i.e. it is a number
上述isInteger()
function
可正常工作,即
isInteger("3.14"); // false