0

我有两个日期选择器。选择开始日期后,结束日期会在 x 天后通过 php.ini 自动分配。这工作正常,但我有一个问题。完成这项工作的 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');

更新。更改变量 days 以提前几天设置结束日期。

于 2012-04-04T03:44:10.170 回答
0

尝试删除 document.ready 并将其放置在脚本标记中。

<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 回答