繁体   English   中英

jQuery多于少

[英]jQuery More & Less Than

我正在尝试显示警报,如果该值等于或大于最小值且小于最大设置值。 如果将dob设置为'01 -09-1996',该警报仍会触发吗? 有人指出我做错了吗? 谢谢。

$(function() {
    $('#date1 input').autotab_magic().autotab_filter('numeric');

    $(".eligibilityform").submit(function(e) {

        // Input Values
        var day = $("#day").val();
        var month = $("#month").val();
        var year = $("#year").val();

        // DOB Value
        var dob = new Date(day + '-' + month + '-' + year);

        // DOB Rules
        var mindob = new Date("01-09-1996");
        var maxdob = new Date("31-08-2000");

        // DOB Eligibility
        if (dob >= mindob && dob <= maxdob) {
            alert("Welcome");

            // Season Eligibility
            var spring2015min = new Date("01-09-1997");
            var spring2015max = new Date("31-08-1998");
            if (dob >= spring2015min && dob <= spring2015max) {
                alert("Spring 2015");
            }
            var summer2015min = new Date("01-09-1997");
            var summer2015max = new Date("31-08-1999");
            if (dob >= summer2015min && dob <= summer2015max) {
                alert("Summer 2015");
            }
            var autumn2015min = new Date("01-01-1998");
            var autumn2015max = new Date("31-08-1999");
            if (dob >= autumn2015min && dob <= autumn2015max) {
                alert("Autumn 2015");
            }
            var spring2016min = new Date("01-09-1998");
            var spring2016max = new Date("31-08-1999");
            if (dob >= spring2016min && dob <= spring2016max) {
                alert("Spring 2016");
            }
            var summer2016min = new Date("01-09-1998");
            var summer2016max = new Date("31-08-2000");
            if (dob >= summer2016min && dob <= summer2016max) {
                alert("Summer 2016");
            }
            var autumn2016min = new Date("01-01-1998");
            var autumn2016max = new Date("31-08-2000");
            if (dob >= autumn2016min && dob <= autumn2016max) {
                alert("Autumn 2016");
            }

        } else {
            alert("Sorry");
        }

        return false;
    });
});

回答

// Eligibility
$(function() {
  $('#date1 input').autotab_magic().autotab_filter('numeric');
  $('.error-message').hide();
  $('.success-message').hide();
  $('.seasons').hide();
  $('.seasons li').hide();
  $(".eligibilityform").submit(function(e){
    // Input Values
    var day = $("#day").val();
    var month = $("#month").val();
    var year = $("#year").val();
    // DOB Value
    var dob = new Date(month+'/'+day+'/'+year);
    // DOB Rules
    var mindob = new Date("09/01/1997");
    var maxdob = new Date("08/31/2000");
    // DOB Eligibility
    if (dob >= mindob && dob <= maxdob) {
      $('.success-message').show();
      $('.intro-message').hide();
      $('.error-message').hide();
      $('.eligibilityform').hide();
      $('.seasons').show();
      // Season Eligibility
      var spring2015min = new Date("09/01/1997");
      var spring2015max = new Date("08/31/1998");
      if (dob >= spring2015min && dob <= spring2015max){
              $('.seasons li.one').show();
      }
      var summer2015min = new Date("09/01/1997");
      var summer2015max = new Date("08/31/1999");
      if (dob >= summer2015min && dob <= summer2015max){
        $('.seasons li.two').show();
      }
      var autumn2015min = new Date("01/01/1998");
      var autumn2015max = new Date("08/31/1999");
      if (dob >= autumn2015min && dob <= autumn2015max){
        $('.seasons li.three').show();
      }
      var spring2016min = new Date("09/01/1998");
      var spring2016max = new Date("08/31/1999");
      if (dob >= spring2016min && dob <= spring2016max){
        $('.seasons li.four').show();
      }
      var summer2016min = new Date("09/01/1998");
      var summer2016max = new Date("08/31/2000");
      if (dob >= summer2016min && dob <= summer2016max){
        $('.seasons li.five').show();
      }
      var autumn2016min = new Date("01/01/1998");
      var autumn2016max = new Date("08/31/2000");
      if (dob >= autumn2016min && dob <= autumn2016max){
        $('.seasons li.six').show();
      }
    } else {
      $('.intro-message').hide();
      $('.success-message').hide();
      $('.error-message').show();
    }
    return false;
  });
});

这是因为您试图在string上使用>=<=运算符。

您需要将字符串转换为Date对象

var d = new Date(year, month, day, hours, minutes, seconds, milliseconds);

这里

然后您可以比较日期

  var dob = new Date("09-01-1996");
  var spring2015min = new Date("09-01-1997");
  var spring2015max = new Date("08-31-1998");
  if (dob >= spring2015min && dob <= spring2015max){
    alert("Spring 2015");
  }

更新:在您的情况下, Date对象将采用(MM-dd-yyyy)格式的字符串

您可以在这里看到它的工作方式: JSFiddle

问题是您不能那样比较日期,只能比较整数。 我会用这样的东西:

if( (new Date(dob).getTime() >= new Date(spring2015min).getTime()))

您正在执行的当前测试是字符串检查,因此它将测试实际字符串是否相等或它们的数字等效字符大于其数值。 您应该使用new Date()将字符串转换为日期,然后检查日期对象

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM