0

我在验证时遇到了一些问题。在这里,正在检查一个输入,它是一个数字,不是 = 到无,它大于或 = 到 3 并且小于或 = 到 12。由于某种原因,我只能成功验证第一部分. 我无法让 ">3= && <=12" 工作,请帮助。

}else if(question_pos==2){
        if( $("#myinput").val() != "" && Number($("#myinput").val() ) && $("#myinput").val() >= "3" && $("#myinput").val() <= "12" ){
        return true;
    }else{
        return false;
    }

这是问题的一部分

$("#baseline_05_ft").val() >= "3" && $("#baseline_05_ft").val() <= "12"
4

4 回答 4

2

您的代码很混乱,这可能是导致错误的原因。

像这样写:

var value = parseInt($("#myinput").val(), 10 /*radix*/);
if (isNaN(value) === false && value >= 3 && value <= 12) {
    // ..
}

永远不要在你的意思是数字的地方比较字符串。比较你应该比较的东西。它使代码更易于阅读和理解。


这也允许您将严格比较 ( !==and ===) 用作:

3 === 3; // true
3 === "3"; // false
3 == "3"; // true

我从来没有发现你想使用==而不是===.

于 2013-04-02T17:17:34.207 回答
1

您应该将其转换为整数-

var myVal = parseInt($("#myinput").val(), 10);
if(!isNaN(myVal) && myVal >= 3 && myVal <= 12) {
    //do stuff
}
于 2013-04-02T17:20:01.373 回答
0

您正在比较字符串,而不是数字。没有在词法上比较大于"3…"但小于的值"1…"

if (question_pos==2) {
    var strVal = $("#myinput").val();
    var val = Number(strVal);
    return strVal != "" && !isNaN(val) && val >= 3 && val <= 12;
}
于 2013-04-02T17:18:32.510 回答
0

首先使用 javascript,您应该===在进行逻辑比较时使用运算符。其次,您的问题部分是比较两个字符串,而不是数字。尝试先将它们转换为数字。

var myInput = parseInt($('#myinput').val(), 10); //always declare a base when doing parseint
if(myInput >= 3 && myInput <= 12){
    //its valid do stuff to it
}
于 2013-04-02T17:18:37.620 回答