jQuery datepicker,在选择日期后添加一定天数

时间:2011-09-14 15:23:35

标签: php jquery date datepicker

一旦用户从日期选择器中选择了日期,我想添加41天。

<script language="javascript">
$(document).ready(function() { 

$("#startdate").datepicker({    dateFormat: 'd/m/y'});

    $('#startdate').datepicker({
        onSelect: function(dateStr) {
            var nights = parseInt($('#numofdays').val());
            var depart = $.datepicker.parseDate('d/m/y', dateStr);
            depart.setDate(depart.getDate('d/m/y') + nights);
            $('#calc').val(depart);
         }
    });




});
</script> 


Start: <input type="text" id="startdate" class="datepicker"><br />
<input type="hidden" id="numofdays" value="41"><br />
Calc: <input type="text" id="calc">

4 个答案:

答案 0 :(得分:1)

$('#startdate').datepicker('getDate')将返回Date对象

d = $('#startdate').datepicker('getDate');
d.setDate(d.getDate()+nights); // add int nights to int date
alert(d);

添加d.getDate()nights会缩短时间。因此,如果9/16/2011 + 41天,您将获得10/25/2011

答案 1 :(得分:1)

作为选择日期的用户,

似乎很奇怪,然后该框表示41天后的日期而不是我选择的日期。为什么不用PHP添加服务器端呢?

$date_string = date('Y-m-d', strtotime('+41 days', strtotime($_POST['date_input'])));

答案 2 :(得分:1)

您可能只需要在同一启动函数中组合选项:

$("#startdate").datepicker({
    dateFormat: 'd/m/y',
    onSelect: function(dateStr, inst) {
        var nights = parseInt($('#numofdays').val());
        var depart = $.datepicker.parseDate('d/m/y', dateStr);
        depart.setDate(depart.getDate('d/m/y') + nights);
        $('#calc').val(depart.toLocaleDateString());
    }
});

请参阅此操作:http://jsfiddle.net/william/L9Szd/

答案 3 :(得分:0)

这是我发现这样做的唯一简单方法:

将日期设置为所选日期之前的41天:

1.从datepicker字段中获取所选日期

var newdate = new Date($("#datepicker_date_field_1").datepicker("getDate"));

2.增加从上面获得的日期

newdate.setDate(newdate.getDate() + 41);

3.将新形成的日期分配给另一个(或相同的)datepicker字段

$("#datepicker_date_field_2").datepicker("setDate",newdate);