如何从表单结果中删除 isNaN?

Posted

技术标签:

【中文标题】如何从表单结果中删除 isNaN?【英文标题】:how do I get rid of isNaN from form results? 【发布时间】:2012-01-29 16:13:12 【问题描述】:

我正在创建一个小计算器。其中一部分将允许您输入最多 4 个数字,但您也可以只输入 1,2 或 3。我的代码正常工作,除了当我只输入 1、2 或 3 个数字时,我会得到我没有输入的数字的 NaN 结果。

如何摆脱 NaN 结果?

我用于分割输入表单数据的 jQuery 是 -

    var numbers = num4.split(" ");
    var firstNumber = parseInt(margins[0], 10),
        secondNumber = parseInt(margins[1], 10),
        thirdNumber = parseInt(margins[2], 10),
        fourthNumber = parseInt(margins[3], 10);
    console.log(firstNumber, secondNumber, thirdNumber, fourthNumber);

    var shorthand1 = parseInt (firstNumber, 10) * 1;
    var shorthand2 = parseInt (secondNumber, 10) * 1;
    var shorthand3 = parseInt (thirdNumber, 10) *1;
    var shorthand4 = parseInt (fourthNumber, 10) *1;

而我只有

shorthand1 + shorthand2 + shorthand3 + shorthand4 

结果显示在页面上的 div 中。

问题是如果我输入“10 10 10”而不输入第四个数字,我会得到结果

10 10 10 NaN

我可以检查 NaN 而不处理该结果吗?

【问题讨论】:

【参考方案1】:

您可以使用 javascript isNaN(value) 函数检查值是否为 NaN。

【讨论】:

【参考方案2】:

你可以在js中检查isNaN()

请注意,isNaN() 函数仅检查值的“数值性质”,而不检查该值是否有限。要检查一个数字是否是有限的,你应该使用 JavaScript 的 isFinite()。

【讨论】:

Sudhur 是对的 - isFinite 检测到 NaN 并返回 false。 parseInt 如您所见返回 NaN。另外,我建议你在拆分之前检查你的 numbers 数组的长度。如果有人输入“10 10 10”,则数组缺少一个元素,numbers.length 会告诉你这一点。您可以分配填充值,向用户返回错误,或以您认为合适的任何方式处理它。【参考方案3】:

isNaN() 函数判断一个值是否为非法数字(Not-a-Number)。

如果值为 NaN,则此函数返回 true,否则返回 false。

<script type="text/javascript">
document.write(isNaN(123)+ "<br />");
document.write(isNaN("Hello")+ "<br />");
document.write(isNaN(NaN)+ "<br />");
</script> 

输出: 假 真的 真的 对于您的情况,您可以检查如下:

<html>
<body>
<script type="text/javascript">
if(!isNaN(123))
document.write(isNaN(123)+ "<br />");

if(isNaN("Hello"))
document.write(isNaN("Hello")+ "<br />");

</script>
</body>
</html>

【讨论】:

如果没有数字或没有文字,这是否有效?因此,如果他们只输入 10 10 而不是 10 10 10 10 那么它不会导致 10 10 NaN NaN ? 无论如何,在您的情况下, parseInt 将返回 NaN 作为空值。看到这个Question

以上是关于如何从表单结果中删除 isNaN?的主要内容,如果未能解决你的问题,请参考以下文章

如何从表单中删除 jQuery 验证?

jquery:如何在提交之前从表单中删除空白字段?

如何从 Django 表单中删除必需的属性

访问表单 - 如何从“此视图可用的字段”中删除额外的链接表

如何从表单集中删除表单

Spring MVC 和表单绑定:如何从列表中删除项目?