isNAN没有评估

时间:2014-05-29 15:45:30

标签: javascript forms events

Newb在这里试图学习

我正在尝试检查输入到我的表单中的数据,如果输入到第二个或第三个输入的数据不是数字(即按字母顺序),则向用户显示通知,即信息不是数字。我正在使用'isNaN'功能执行此操作,但根据我在Google,Stack和其他地方阅读的内容,它无法正常工作。我已经尝试了'isNaN'和'!isNaN',在我的剧本中都没有触发希望的事件。

这是我正在尝试的JavaScript:     if(empty(thisForm.epiName,“剧集名称留空。请输入剧集提交的名称,以便我们大胆地去检查你的结果!”)){return false;}

        if(empty(thisForm.rsTot,"Red shirt total left blank. Please enter the total estimated number of Starfleet officers wearing red shirts to appear in this episode so we can boldly go and check your results!")){return false;}

        if(empty(thisForm.reRemaining,"Red shirts surviving left blank. Please enter the number of Starfleet officers to survive this episode so we can boldly go and check your results!")){return false;}

        if(isNaN(thisForm.rsTot,"Info entered is not a number, we can not boldly check your result!")){return false;}

        if(isNaN(thisForm.reRemainder,"Info entered is not a number, we can not boldly check your result!")){return false;}



        return true;//if all is passed, submit!

网站网址:http://zephir.seattlecentral.edu/~jstein11/itc250/z14/_sbx031_OOPform/sbx031b_OOPform.php

4 个答案:

答案 0 :(得分:2)

isNaN只接受1个参数。 此外,您应该知道在被检查之前,参数被强制转换为数字。

为避免出现意外结果,最好先检查一下是否为号码。

function safeIsNaN(num) {
    if (typeof num !== "number") {
        return true; //this is Not-a-Number
    }  
    return isNaN(num);
}

答案 1 :(得分:2)

首先,例如代码中的thisForm.rsTot是HTMLElement,它永远不会是数字。修复将是这样的:

if(isNaN(+(thisForm.rsTot.value))) {
    alert("Info entered is not a number, we can not boldly check your result!");
    return false;
}

一元+会将其操作数转换为数字,如果失败,操作数将转换为NaN,然后由isNaN检查。我更喜欢一元+,因为parseFloat()返回字符串中可能的前导数字,如果字符串中只有一个非数字字符,则一元+总是给NaN

请注意,您必须使用input的值而不是元素本身。该值始终为字符串。


检查变量是否为数字的一般方法:

function isNumber (n) {
    return (!isNaN(+n) && isFinite(n));
}

答案 2 :(得分:1)

您需要将表单字段的值传递给isNaN,加上提到的注释,isNaN函数只接受一个参数。您将需要一些向用户显示错误消息的其他方式:

if (isNaN(thisForm.reTot.value)) {
    // call some function to show error message, which you will need to create
    return false;
}

答案 3 :(得分:0)

您应该检查语法错误。顺便说一下,如果你想检查一些不是数字的东西(isNaN),你就不需要否定了#34;!"。

请尝试此参考JavaScript isNaN() on w3schools