如果输入日期大于js中的定义日期,如何发出警报

时间:2016-03-28 06:35:08

标签: javascript jquery date

我的表单中有输入日期字段。在我的日期字段中 如果输入日期大于我之前定义的任何日期,我需要提醒错误 这是我的代码:

$(document).ready(function () {
    var date = new Date(2016,2,1); //the defined date is 1 March 2016
    var day = date.getDate();
    var month = date.getMonth();
    month = month + 1;

    if(day < 10){
        day = '0' + day;
    }

    if(month < 10){
        month='0'+month;
    }

    someday = day + '/' + month + '/' + date.getFullYear();

    $("#q1 input").blur(function(){   //#q1 is the ID for the input field.
        if($('#q1 input').val() > someday){
            alert('the input is bigger than the defined');
        }else{  
            alert('the defined is bigger than the input ');
        }
    });
});

4 个答案:

答案 0 :(得分:1)

比较日期非常简单。大多数操作员将操作数强制为数字,日期返回其时间值,以便查看今天是在2016年3月1日之前或之后,创建两个日期并进行比较:

var epoch = new Date(2016,2,1); // Create date for 2016-03-01T00:00:00
var now   = new Date();         // Create a date for the current instant
now.setHours(0,0,0,0);          // Set time to 00:00:00.000

if (now < epoch) {
  alert('Before 1 March, 2016');
} else {
  alert('On or after 1 March, 2016');
}

或者更紧凑:

alert((now < epoch? 'Before':'On or after') + ' 1 March, 2016');

答案 1 :(得分:0)

您可能希望比较日期格式中的值,而不是您的方式。 将输入值转换为日期形式,并将其与变量&#39; date&#39;。

进行比较

答案 2 :(得分:0)

将输入日期与您定义的所需日期进行比较。例如:

var d1 = new Date();
var d2 = new Date(d1);
var same = d1.getTime() === d2.getTime();
var notSame = d1.getTime() !== d2.getTime();

如果你发现它很棘手,那么有一个很棒的js库叫moment.js。在玩日期时非常有用。

答案 3 :(得分:0)

$(document).ready(function () {
    var date=new Date(2016,2,1); //the defined date is 1 March 2016
    var fixedDate = returnDate(date);// convert date in dd/mm/yyyy format

    //#q1 input will search a child input inside an #q1 dom element, which probably not the case
    // input#q1 will refer to input with id #q1
   // You can directly query the input since it has id #q1 so #q1 input is not correct


$("#q1").blur(function(){   //#q1 is the ID for the input field.
 var d2 = new Date($('#q1').val());
 var inputDate = returnDate(d2); // convert input date in dd/mm/yyyy format

 if(inputDate > fixedDate){ // compare two dates
  console.log('the input is bigger than the defined');
  }else{    
  console.log('the defined is bigger than the input ');
}
});
});

// Write a general function to convert date in dd/mm/yyyy format
function returnDate(date){
   var day=date.getDate();
    var month=date.getMonth();
    month=month+1;
    if(day<10){
    day='0'+day;
 }
   if(month<10){
   month='0'+month;
 }
 var someday=day+ '/' + month + '/' + date.getFullYear();
  return someday;
}

JSFIDDLE

编辑1

使用三元运算符代替if-else

inputDate > fixedDate? (console.log("the input is bigger than the defined")):(console.log("the defined is bigger than the input"))

with ternary operator