无法使isNaN功能正常工作

时间:2016-07-14 09:06:14

标签: javascript

我创建了三个文本框。前两个文本框用于两个数字(用于减法)。结果将显示在第三个文本框中。我试图这样做,以便如果用户输入一个字母而不是一个数字,就会发出警报。

现在,isNaN无效。每当我在第一个或第二个文本框中放入任何内容时,无论数字或字母如何,它都会发出警报。这是我的代码。

function myFunction() {
    var x = document.getElementById("taxFree"); //textbox 1
    var y = document.getElementById("prodCost"); //textbox 2
    var res = document.getElementById("salesMargin"); //Result textbox

     // If x or y is Not a Number, send alert to user
    if (isNaN(x) || isNaN(y)) {
        alert("Numers only!");
        return;
    } 
    res.value = x.value - y.value;
}

提前致谢!

3 个答案:

答案 0 :(得分:4)

尝试检查value的{​​{1}}:

input

答案 1 :(得分:1)

isNaN函数会告诉您某个值是否等于特殊值NaN。如果它是一个字符串,它将尝试解析它。对于不是数字的每个值,isNaN都不会返回true,例如isNaN(true) === false

另一件事是你尝试在输入元素本身上调用isNaN,而不是它的值。试试这个:

function myFunction() {
    var taxFree = document.getElementById("taxFree");
    var prodCost = document.getElementById("prodCost");
    var salesMargin = document.getElementById("salesMargin"); //Result textbox

    var x = parseFloat(taxFree.value);
    var y = parseFloat(prodCost.value);
     // If x or y is Not a Number, send alert to user
    if (isNaN(x) || isNaN(y)) {
        alert("Numers only!");
        return;
    } 
    salesMargin.value = x - y;
}
<input id="taxFree" value="15">
<input id="prodCost" value="10">
<input id="salesMargin" value="x">
<button onclick="myFunction()">Go!</button>

答案 2 :(得分:0)

如果您想知道输入的输入是否为数字,我必须说这种方法不起作用。

试试这个,这个函数只接受0到9之间的数字,不允许任何其他小数甚至小数。它通过检查输入的输入的char

来实现

代码:onkeypress='return event.charCode >= 48 && event.charCode <= 57'

只需将此行添加到您的输入中,如下所示:

<input id="taxfree" onkeypress='return event.charCode >= 48 && event.charCode <= 57'>