0

私は2つのデートピッカーを持っています。開始日を選択すると、終了日はphpを介してx日後に自動的に割り当てられます。これは問題なく動作しますが、問題が1つあります。このジョブを実行するjQueryコード。ページが更新/ロードされたときにも起動されるようにします(開始日はphpセッションに保存されます)。これは私のコードです:

$(document).ready(function(){
    $("#txtStartDate").datepicker({
        onSelect: function(){
        var datum = $(this).datepicker('getDate');
        datum.setDate(datum.getDate() + <?php echo $nights; ?>);
        $("#txtEndDate").datepicker("setDate", new Date(datum.getTime()));
        }
    });
    $("#txtEndDate").datepicker();
}); 

「onSelect、onLoad:funct...」の使い方を考えていました。

これはどのように達成されますか?

4

3 に答える 3

1

別の関数を作成して終了日を設定し、onLoadイベントで呼び出します。

function setEndDate(){
    var datum = $("#txtStartDate").datepicker('getDate');
    datum.setDate(datum.getDate() + <?php echo $nights; ?>);
    $("#txtEndDate").datepicker("setDate", new Date(datum.getTime()));
}

それから<body onLoad="setEndDate();">

于 2012-04-04T04:50:58.090 に答える
0

$("#txtStartDate").trigger('focus');最後に追加

$("#txtStartDate").datepicker({
    onSelect: function() {
        var datum = $(this).datepicker('getDate'),
            days = 2,
            d = new Date(datum.getTime() + (days * 86400000)),
            month = parseInt(d.getMonth(), 10)+1 < 10 ? '0'+ (parseInt(d.getMonth(), 10)+1) : parseInt(d.getMonth(), 10)+1,
            day = d.getDate() < 10 ? '0'+ d.getDate() : d.getDate(),
            year = d.getFullYear();
        $("#txtEndDate").val(month+'/'+day+'/'+year);
    }
});
$("#txtEndDate").datepicker();
$("#txtStartDate").trigger('focus');

更新しました。可変日数を変更して、何日前にも終了日を設定します。

于 2012-04-04T03:44:10.170 に答える
0

document.readyを削除して、scriptタグ内に配置してみてください。

<script type="text/javascript">

 $("#txtStartDate").datepicker({
        onSelect: function(){
        var datum = $(this).datepicker('getDate');
        datum.setDate(datum.getDate() + <?php echo $nights; ?>);
        $("#txtEndDate").datepicker("setDate", new Date(datum.getTime()));
        }
    });
    $("#txtEndDate").datepicker();

 </script>

上記で問題が解決しない場合はdefaultDate: new Date、開始日ピッカーで以下のように設定してみてください

$(function () {
    $.datepicker.setDefaults({
        //Set your common attributes here for both date pickers
    });

    var dateFrom = $('#txtStartDate').datepicker({ defaultDate : new Date,
        onSelect: function (selectedDate) {
            dateTo.datepicker('option', 'defaultDate', dateFrom.datepicker('getDate')+[ x days //add days according to your need]);
        }
    });  

    var dateTo = $('#txtEndDate').datepicker();  
});
于 2012-04-04T04:22:30.623 に答える