1

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

我正在尝试使用eternicode 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();
    }
}).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/

期待您的帮助,但不期待随之而来的额头耳光!

4

3 回答 3

2

我知道这是一个老问题。使用这个https://github.com/eternicode/bootstrap-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');

于 2015-06-21T10:16:36.047 回答
0

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

您可能还需要提供 HTML 标记以验证其格式是否正确。

于 2014-05-21T23:05:13.770 回答
0

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

好消息是首先检查你的 jquery、jquery ui 和所有 js 是否已加载,然后使用 alert 检查变量。

或者您可以删除您的变量引用,然后检查问题是否来自另一个变量。

未捕获的类型错误:无法读取未定义的属性“值”

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

于 2014-05-19T04:32:24.627 回答