使用Pickadate.js设置From和To日期

时间:2015-08-22 01:54:11

标签: javascript jquery date pickadate

我使用pickadate.js设置收件人和发件人日期。我让它基于Code Pen example工作。我正在使用的代码如下:

var from_$input = $('#CAT_Custom_649616, #CAT_Custom_649610').pickadate(),
    from_picker = from_$input.pickadate('picker');

var to_$input = $('#CAT_Custom_649617, #CAT_Custom_649611').pickadate(),
    to_picker = to_$input.pickadate('picker');


if ( from_picker.get('value') ) {
  to_picker.set('min', from_picker.get('select'));
}
if ( to_picker.get('value') ) {
  from_picker.set('max', to_picker.get('select'));
}


from_picker.on('set', function(event) {
  if ( event.select ) {
    to_picker.set('min', from_picker.get('select'))  ;  
  }
  else if ( 'clear' in event ) {
    to_picker.set('min', false);
  }
});
to_picker.on('set', function(event) {
  if ( event.select ) {
    from_picker.set('max', to_picker.get('select'));
  }
  else if ( 'clear' in event ) {
    from_picker.set('max', false);
  }
});

我想将代码比示例更进一步。设置From日期后,它将停用To日期之前的From日期。例如,如果您设置2015年8月21日的起始日期,则在日期字段中,您可以选择2015年8月21日或之后的任何内容。设置“到”日期时也会发生相同的情况。您无法在到日期之后选择任何起始日期。

唯一的问题是,如果我将截止日期设置为8月21日,我也可以选择8月21日的截止日期。我想要实现的是能够禁用在相应的“从”和“到”字段中选择的日期。

换句话说,如果我选择8月21日作为我的发件日期,那么我可以在日期字段中选择的最早日期是8月22日,反之亦然。

如何修改我的代码才能实现这一目标?

1 个答案:

答案 0 :(得分:0)

试试这个,它对我有用。我只是为了约会。

var from_$input = $('#CAT_Custom_649616, #CAT_Custom_649610').pickadate(),
from_picker = from_$input.pickadate('picker');

var to_$input = $('#CAT_Custom_649617, #CAT_Custom_649611').pickadate(),
to_picker = to_$input.pickadate('picker');

if (from_picker.get('value')) {
    var checkIN = new Date($('#CAT_Custom_649616, #CAT_Custom_649610').val());
    checkIN.setDate(checkIN.getDate() + 1);
    var dateDateN = checkIN.getDate();
    var dateMonthN = checkIN.getMonth() + 1; //January is 0!
    var dateYearN = checkIN.getFullYear();
    to_picker.set('min', new Date(dateYearN, dateMonthN - 1, dateDateN + 1));
}

if (to_picker.get('value')) {
    //from_picker.set('max', to_picker.get('select'))
}
from_picker.on('set', function (event) {
    if (event.select) {
       // alert(from_picker.get('select'));
    var checkIN = new Date($('#CAT_Custom_649616, #CAT_Custom_649610').val());
    checkIN.setDate(checkIN.getDate() + 1);
    var dateDateN = checkIN.getDate();
    var dateMonthN = checkIN.getMonth() + 1; //January is 0!
    var dateYearN = checkIN.getFullYear();
    to_picker.set('min', new Date(dateYearN, dateMonthN - 1, dateDateN + 1));
    } else if ('clear' in event) {
        to_picker.set('min', false)
    }
})