【问题标题】:datepicker onClose issue日期选择器关闭问题
【发布时间】:2013-12-16 12:20:24
【问题描述】:

通过对这个网站的研究,我找到了一种使用 2 个日期选择器的方法。如果您在第一个日期上选择一个日期,第二个日期将自动显示所选日期为新的 minDate。您可以在我的测试服务器上看到这一点:http://www.zinius.nl/trips

我遇到的问题发生在这种情况下: 选择入住日期字段,但不要选择日期并单击其他位置。你不会 能够再次备份入住日期字段日期选择器弹出窗口,直到您刷新整个页面或首先选择退房日期。

这是我正在使用的代码:

$( "#datepicker1" ).datepicker({
showOn: 'both',
buttonImage: 'images/ico/calendar.png',
buttonImageOnly: true,
minDate: 0,
firstDay: 0,
dateFormat: 'mm-dd-yy',
changeMonth: false,
numberOfMonths: 1,
onClose: function( selectedDate ) {
    var minDate = $(this).datepicker('getDate');
    var newMin = new Date(minDate.setDate(minDate.getDate() + 1));
    $( "#datepicker2" ).datepicker( "option", "minDate", newMin );
    $( "#datepicker2" ).datepicker( "show" );
}
});
$( "#datepicker2" ).datepicker({

showOn: 'both',
buttonImage: 'images/ico/calendar.png',
buttonImageOnly: true,
minDate: '+1d',
changeMonth: false,
firstDay: 0,
dateFormat: 'mm-dd-yy',
numberOfMonths: 1,
onClose: function( selectedDate ) {
}
});

我尝试将 onClose 替换为 onSelect。这解决了这个问题,但是当我在 datepicker1 上选择一个日期时,datepicker2 会立即出现并消失。

有没有人有办法让它正常工作?

谢谢你, 吉利亚诺

【问题讨论】:

  • onClose 检查是否定义了 minDate 并在脚本的其余部分携带一个。

标签: javascript jquery datepicker


【解决方案1】:

尝试在第一个 datePicker 上更改 onClose 函数

...,
onClose: function( selectedDate ) {
  var minDate = $(this).datepicker('getDate');
  if(minDate){
    var newMin = new Date(minDate.setDate(minDate.getDate() + 1));
    $( "#datepicker2" ).datepicker( "option", "minDate", newMin );
    $( "#datepicker2" ).datepicker( "show" );
  }
}

【讨论】:

    【解决方案2】:

    查看控制台,我可以看到正在记录此错误:

    无法调用 null 的方法 'getDate'

    意思是你的陈述:

    var minDate = $(this).datepicker('getDate');
    

    导致问题。你可以做的是先检查selectedDate(传递给onClose回调)是否有效,然后再尝试getDate

    onClose: function(selectedDate) {
        if (selectedDate) {
            ...
        }
    }
    

    【讨论】:

    • 你是对的。用 Marco 提供的条件语句解决了它。感谢您的帮助!
    猜你喜欢
    • 2019-09-28
    • 2011-10-20
    • 2018-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多