Bootstrap DatePicker签入/签出

时间:2014-05-19 04:16:11

标签: javascript jquery datepicker bootstrap-datepicker

这应该是直截了当的......但是2小时后我仍然看不到问题。

我正在尝试使用eternicode datepicker实现两个日期选择器“签入”/“签出”。

作者自己甚至记录了与其版本here一起使用的更新解决方案。

var nowTemp = new Date();
var now = new Date(nowTemp.getFullYear(), nowTemp.getMonth(), nowTemp.getDate(), 0, 0, 0, 0);

var checkin = $('#dpd1').datepicker({
    beforeShowDay: function(date) {
        return date.valueOf() >= now.valueOf();
    }
}).on('changeDate', function(ev) {
    if (ev.date.valueOf() > checkout.date.valueOf()) {
        var newDate = new Date(ev.date)
        newDate.setDate(newDate.getDate() + 1);
        checkout.setValue(newDate);
        checkout.setDate(newDate);
        checkout.update();
    }
    checkin.hide();
    $('#dpd2')[0].focus();
}).data('datepicker');
var checkout = $('#dpd2').datepicker({
    beforeShowDay: function(date) {
        return date.valueOf() > checkin.date.valueOf();
    }
}).on('changeDate', function(ev) {
    checkout.hide();
}).data('datepicker');

当我尝试实现它时,我在控制台中得到以下内容

Uncaught TypeError: Cannot read property 'valueOf' of undefined 

我试图定义日期变量,但它似乎没有什么区别。

JSfiddle:http://jsfiddle.net/56bVc/1/

期待你的帮助,但不要期待随之而来的额头拍打!

3 个答案:

答案 0 :(得分:2)

我知道这是一个老问题。使用此https://github.com/eternicode/bootstrap-datepicker版本的datepicker时,我也遇到了同样的问题。

经过几次头痛,我已经重新编写了一些签入/签出脚本并取得了一些成功。

希望这有助于其他人面对同样的问题。

var nowTemp = new Date();
var now = new Date(nowTemp.getFullYear(), nowTemp.getMonth(), nowTemp.getDate(), 0, 0, 0, 0);

var checkin = $('#dpd1').datepicker({
    beforeShowDay: function(date) {
        return date.valueOf() < now.valueOf() ? 'disabled' : '';
    }
}).on('changeDate', function(ev) {
    if (ev.date.valueOf() > checkout.viewDate.valueOf()){
        var newDate = new Date(ev.date)
        newDate.setDate(newDate.getDate() + 1);
        checkout.setDate(newDate);		
    }
    else {
        checkout.setDate(ev.date + 1);
    }
    
    checkin.hide();
    $('#dpd2')[0].focus();
}).data('datepicker');

var checkout = $('#dpd2').datepicker({
    beforeShowDay: function(date) {
        return date.valueOf() <= checkin.viewDate.valueOf() ? 'disabled' : '';
    }
}).on('changeDate', function(ev) {
    checkout.hide();
}).data('datepicker');

答案 1 :(得分:0)

我阅读了一些博客,根据我的理解,这是jquery引用的问题,或者在使用之前未定义您的变量。

好的方法是首先检查你的jquery,jquery ui&amp;加载所有js,然后通过alert检查变量。

或者您可以删除变量引用,然后检查问题是否来自其他变量。

Uncaught TypeError: Cannot read property 'value' of undefined

http://www.sitepoint.com/forums/showthread.php?1102772-Uncaught-TypeError-Cannot-read-property-value-of-null

答案 2 :(得分:0)

你使用什么Bootstrap版本?浏览插件的代码,它使用Bootstrap类名从DOM中挑选元素(有BS3和BS2的版本)。

您可能还想提供HTML标记,以便根据正确的格式进行验证。