2017-04-18 113 views
0

我有下面的代码不工作。jQuery逻辑运算符没有按预期在jquery中工作

var day = $("#day").val(); 
var week = $("#week").val(); 
var month = $("#month").val(); 

if (day > week) { 
    alert(day > week); 
    $('#error').text("Day Limit Must be smaller than Week Limit"); 
    $('.alert-danger').show(); 
    setTimeout(function() { 
     $(".alert-danger").hide(); 
    }, 5000); 
    return false; 
} 
if (day > month) { 
    $('#error').text("Day Limit Must be smaller than Month Limit"); 
    $('.alert-danger').show(); 
    setTimeout(function() { 
     $(".alert-danger").hide(); 
    }, 5000); 
    return false; 
} 
if (month < week) { 
    $('#error').text("Week Limit Must be smaller than Month Limit and greater than Day Limit"); 
    $('.alert-danger').show(); 
    setTimeout(function() { 
     $(".alert-danger").hide(); 
    }, 5000); 
    return false; 
} 

这里我得到day=4week=6month=9。在这种情况下,所有if条件都正常工作。但month=10,第二个if条件不起作用(4>10)实际上是false但它变得true

我的逻辑有什么问题?

+2

'.VAL()'返回字符串前值到整数转换,则需要将其转换为数字 – Satpal

+2

你比较** **字符串。在这里有一个重复的地方...(在正常情况下'val'返回一个字符串[异常情况:一个空的jQuery对象或jQuery对象中的非字段元素,在这种情况下,您将获得'undefined']。) –

回答

1

你应该比较

var day = parseInt($("#day").val()); 
var week = parseInt($("#week").val()); 
var month = parseInt($("#month").val()); 
0

您需要首先通过parseint将这些值转换为整数,然后将它们作为数字进行比较。

+0

对于这个问题,我们不需要**又一个**答案。 –