大于/小于问题

时间:2011-11-15 13:51:28

标签: jquery validation

我想验证用户输入。如果用户输入的数字大于3,那么它应该输出错误“太高”,如果小于0.15,则“太低”。如果它介于3和0.15之间,那么它应该显示'Okay'。

我的代码存在的问题是,如果用户输入了负值,它仍然会向他显示“好”。似乎无论用户输入什么,它都显示'好'。

这是代码:

$('#submit').click(function(e) {
        vel = $('#vel').val();
        validVel(vel);
});

function validVel(v) {

    if (v > 3) {
        $('.er').fadeIn(2000);
        var error = "Too High";
        $('.er').text(error);   
    }
    else if (v < 0.15) {
        $('.er').fadeIn(2000);
        var error = "Too Low";
        $('.er').text(error);   
    }
    else {
        $('.er').fadeIn(2000);
        var error = "Okay";
        $('.er').text(error);
    }


}

3 个答案:

答案 0 :(得分:4)

您的函数中需要parseFloat以确保相等性检查有效。正如WilQu所指出的,你还应该包括isNaN测试 -

function validVel(v) {

    fv = parseFloat(v);

    if (fv > 3) {
        $('.er').fadeIn(2000);
        var error = "Too High";
        $('.er').text(error);   
    }
    else if (fv < 0.15) {
        $('.er').fadeIn(2000);
        var error = "Too Low";
        $('.er').text(error);   
    }
    else if (isNaN(fv)) {
        $('.er').fadeIn(2000);
        var error = "Not a number";
        $('.er').text(error);   
    }   
    else {
        $('.er').fadeIn(2000);
        var error = "Okay";
        $('.er').text(error);
    }
} 

演示 - http://jsfiddle.net/AyhRS/7

答案 1 :(得分:2)

.val()正在返回一个字符串。要将其转换为数字,只需在$('#vel').val()之前加上加号,即vel = +$('#vel').val();

答案 2 :(得分:2)

您尝试验证的值是一个字符串。使用parseFloat功能。不要忘记检查您是否收到NaN