【问题标题】:how to remove nan in jquery如何在jquery中删除nan
【发布时间】:2019-11-19 18:50:22
【问题描述】:

我输入了格式为 20,000.00 的数字字段

如果用户没有在第一个字段中键入,如何删除 Nan?

document.getElementById("BasicSalary_x").onblur =function (){    
    this.value = parseFloat(this.value.replace(/,/g, ""))
                    .toFixed(2)
                    .toString()
                    .replace(/\B(?=(\d{3})+(?!\d))/g, ",");
    
     
    
}

 function isNumberKey(evt) {
    var charCode = ((evt.which) ? evt.which : event.keyCode);
    return !(charCode > 31 && (charCode != 46 && charCode != 44 && (charCode < 48 || charCode > 57)));

}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="tel"  onkeypress="return isNumberKey(event)" id="BasicSalary_x" placeholder="Basic Salary (RM)"   >


<input type="tel" value="0.00" onkeypress="return isNumberKey(event)" id="deduction" placeholder="Deduction (RM)"   >

【问题讨论】:

  • 抱歉刚刚删除了 display_BasicSalary_x ,如果不填写第一个字段并使用 tab 到下一个字段会出现 Nan
  • 在处理之前检查该字段是否为空:if (document.getElementById('BasicSalary_x').value != '') { ... }
  • @GrafiCode 仍然会给出NaN 如果您粘贴非数字
  • @freedomn-m 我不知道有人可以在 input type="tel" 中粘贴非数字值,感谢您的澄清
  • @GrafiCode 不是我经常使用的东西 - 只是尝试 OPs 代码。 OPs 代码阻止了非数字输入(但不是粘贴),而不是type=tel,事实证明,它不会阻止任何东西。 developer.mozilla.org/en-US/docs/Web/HTML/Element/input/tel

标签: javascript jquery numbers nan


【解决方案1】:

如果您得到NaNparseFloat,那么您可以使用||0 将其转换为零(或您喜欢的任何默认值)。

parseFloat("x,xx".replace(/,/g, "")) || 0

或者,您可以使用isNaN检查它是否是一个数字

var val = this.value.replace(/,/g, "");
if (isNaN(val)) {
    alert("Please only enter valid values.");
} else {
    ... parseFloat(val) ...
}

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/isNaN

【讨论】:

    猜你喜欢
    • 2019-01-26
    • 2020-09-18
    • 1970-01-01
    • 1970-01-01
    • 2017-10-29
    • 1970-01-01
    • 1970-01-01
    • 2014-03-13
    • 1970-01-01
    相关资源
    最近更新 更多