jQuery datepicker, добавить определенное количество дней после выбора даты - PullRequest
3 голосов
/ 14 сентября 2011

Как только пользователь выбрал дату из средства выбора даты, я хочу добавить 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 ]

1 голос
/ 14 сентября 2011

может показаться странным, что пользователь выбирает дату, и тогда в окне отображается дата, которая на 41 день позже, чем та, которую я выбрал.почему бы не сделать это дополнение на стороне сервера с PHP?

$date_string = date('Y-m-d', strtotime('+41 days', strtotime($_POST['date_input'])));
1 голос
/ 15 сентября 2011

Возможно, вам просто нужно объединить опции в одной и той же инициирующей функции:

$("#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/.

1 голос
/ 14 сентября 2011

$('#startdate').datepicker('getDate') вернет объект Date

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

При добавлении d.getDate() и nights время переместится вперед.Так что если 16.09.2011 + 41 день вы получите 25.10.2011

0 голосов
/ 12 июня 2015

Это единственный простой способ сделать это:

Чтобы установить дату на 41 день раньше выбранной даты:

1.Получить выбранную дату из поля выбора даты

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

2.Увеличить дату, полученную сверху

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

3. Присвойте вновь созданную дату другому (или тому же) полю выбора даты

$("#datepicker_date_field_2").datepicker("setDate",newdate);    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...