2

我需要验证文本框条目。如果用户在绑定期间在此字段中输入字符,它应该只允许整数,因为实体框架会失败。

这是问题:

当用户10-d在此字段中输入时,以数字形式parseFloat返回并忽略其余值。虽然 IMO 它应该抛出 NAN 错误,因为输入文本无法转换为浮点数。true10

请参阅以下示例,您可以使用它。 http://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_parsefloat

在上面的示例中,我感兴趣的是获得 40 年的 NAN 输入。

document.write(parseFloat("40 years") + "<br />");

让我知道是否需要进行更多验证。

4

2 回答 2

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 年”为假。

jsFiddle 演示

如果您不想要尾随小数,那么@jakeclarkson 的正则表达式解决方案会更好

于 2012-06-26T14:20:09.413 回答
2

如果您只想允许整数,那么您可以使用:

function isInteger(str) {
    return /^[0-9]*$/.test(str);
}

isNaNfalse如果您提供小数,将返回,即

isNaN("3.14"); // false, i.e. it is a number

isInteger() function上述将正常工作,即

isInteger("3.14"); // false
于 2012-06-26T14:24:25.780 回答