【问题标题】:NaN error when multiplying乘法时出现 NaN 错误
【发布时间】:2017-02-06 11:59:35
【问题描述】:

我有这个脚本来将两列相乘并在第三列中显示总数。这是代码:

<script>
$(function() {
    $("#num1, #num2").on("keydown keyup", sum);
    function sum() {
    $("#total").val(Number($("#num1").val()) * Number($("#num2").val()));
    }
});
 </script>

和形式:

<form method="POST" name="form1" action="" ">

<label>num1</label> 
<input name="num1" id="num1" type="text" value="SOMENUMBER" />

<label>num2</label>
<input type="text"   name="num2" id="num2" value="SOMENUMBER"/>

<label>total</label> 
<input type="text"  name="total" style="width: 40%;" id="total" readonly />

<button class="square" name="btn" type="submit">SOMEBUTTONNAME</button>

</form>

【问题讨论】:

  • 由@Dave 解决。谢谢。您现在可以关闭此主题。再次感谢您。

标签: javascript jquery nan


【解决方案1】:

您在 HTML 中有 3 个 "action="" "

此代码可防止非数字字符并在单击按钮上计算结果或更改某些数字。

function sum() {
  var num1 = $("#num1").val().replace(",",".");
  var num2 = $("#num2").val().replace(",",".");
  var decimals_prepare = (num1.indexOf(".") > -1) ? num1.split(".")[1].length : 0;
  
  return (!isNaN(num1) && !isNaN(num2)) ? $("#total").val((num1 * num2).toFixed(decimals_prepare)) : console.log("false");
}

$(function() {
  $("#num1, #num2").on("keydown keyup", sum);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form method="POST" name="form1" action="">

  <label>num1</label>
  <input name="num1" id="num1" type="text" value="5" />

  <label>num2</label>
  <input type="text" name="num2" id="num2" value="2" />

  <label>total</label>
  <input type="text" name="total" style="width: 40%;" id="total" readonly />

  <button class="square" name="btn" type="submit" onclick="sum()">SOMEBUTTONNAME</button>

</form>

【讨论】:

  • 值得一提的是 NaN 会出现,直到两个字段都包含一个数字?
  • 作者可以修复if语句中的非数字值
  • 我认为这是问题的重点,不是吗?另外,exta " 虽然错误不会导致这个问题(NaN
  • @Jamiec extra " 是错字。action=" " 而不是 action=" " "
  • 更新答案@DraganSubasic
【解决方案2】:

先检查是否有有效号码

function sum() { 

    var value1 = $("#num1").val();
    var value2 = $("#num2").val();

    if (isNaN(value1) || isNaN(value2){
        return;
    }

    $("#total").val(Number(value1) * Number(value2));
}

【讨论】:

  • 或者最好不要在按键上进行计算,而是添加一个按钮并在单击按钮时进行计算
  • 请注意,javascript 在为空字符串或空格测试 isNaN 时有些奇怪。它将其视为零,因此通过了 isNaN 测试.....
猜你喜欢
  • 2018-09-06
  • 2013-06-22
  • 1970-01-01
  • 2017-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-17
  • 1970-01-01
  • 2019-05-02
相关资源
最近更新 更多