Codded
Codded

Reputation: 1256

jQuery datepicker, add certain number of days once date selected

Once the user has selected the date from the datepicker, i want to add 41 days.

<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">

Upvotes: 3

Views: 8435

Answers (4)

Vladimir Despotovic
Vladimir Despotovic

Reputation: 3498

This is the only simple way I found to do this:

To set date to 41 days ahead of the selected date:

1.Fetch selected date from a datepicker field

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

2.Increase the date got from above

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

3.Assign the newly formed date to another (or same) datepicker field

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

Upvotes: 0

William Niu
William Niu

Reputation: 15853

You might just need to combine the options in the same initiating function:

$("#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());
    }
});

See this in action: http://jsfiddle.net/william/L9Szd/.

Upvotes: 1

dqhendricks
dqhendricks

Reputation: 19251

would seem strange as a user to select a date, and then the box says a date that's 41 days later instead of the one I picked. why not do this addition server side with PHP?

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

Upvotes: 1

John Giotta
John Giotta

Reputation: 16944

$('#startdate').datepicker('getDate') will return a Date object

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

Adding d.getDate() and nights will jump time forward. So if 9/16/2011 + 41 days you'll get 10/25/2011

Upvotes: 1

Related Questions