1

これは簡単なはずですが、2時間経ってもまだ問題がわかりません。

eternicode datepickerを使用して、「チェックイン」/「チェックアウト」の 2 つの日付ピッカーを実装しようとしています。

著者自身も、彼のバージョンで動作する更新されたソリューションをここで文書化しています。

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バージョンの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

私はいくつかのブログを読みましたが、私の理解によれば、これはjquery参照の問題であるか、使用する前に変数が定義されていません。

良いことは、最初にjquery、jquery uiとすべてのjsがロードされていることを確認してから、アラートで変数を確認することです。

または、変数参照を削除してから、問題が別の変数からのものではないことを確認できます。

キャッチされていない TypeError: 未定義のプロパティ '値' を読み取ることができません

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

于 2014-05-19T04:32:24.627 に答える