jQuery добавить год (ы) к дате

Я использую DatePicker и у меня есть дата начала, длина контракта (годы) и дата окончания. Это все поля ввода. Когда начальная дата выбрана вместе с длиной контракта, она должна рассчитать конечную дату.

Таким образом, если начальная дата 01/02/2013 и длина контракта 2 (Годы), следует рассчитать конечную дату 31.01.2015. Я создал несколько jQuery, и я очень близок, но просто не могу получить конечный результат для правильного расчета при получении длины контракта из входных данных.

HTML

<label>Start Date:</label>
<input type='text' name='startdate' id='startdate' />

<label>Contract Length (Year):</label>
<input type='text' name='contractlength' id='contractlength' />

<label>End Date:</label>
<input type='text' name='EndDate' id='EndDate' />

JQuery

$(function() {
$( "#startdate, #EndDate" ).datepicker({
    defaultDate: "+1w",
    dateFormat: 'dd/mm/yy',
    changeMonth: true,
    numberOfMonths: 1,

    onSelect: function( selectedDate ) {
        if(this.id == 'startdate'){
            var ContractTerm = $('#contractlength').val();
            //var ContractTerm = 2;

            var dateMin = $('#startdate').datepicker("getDate");
            var rMax = new Date(dateMin.getFullYear() + ContractTerm, dateMin.getMonth(),dateMin.getDate() - 1); 
            $('#EndDate').val($.datepicker.formatDate('dd/mm/yy', new Date(rMax)));                    
        }
    }
});

});

3 ответа

Попробуй это...

$(function() {
$( "#startdate, #EndDate" ).datepicker({
    defaultDate: "+1w",
    dateFormat: 'dd/mm/yy',
    changeMonth: true,
    numberOfMonths: 1,

    onSelect: function( selectedDate ) {
        if(this.id == 'startdate'){
            var ContractTerm = $('#contractlength').val();
            //var ContractTerm = 2;

            var dateMin = $('#startdate').datepicker("getDate");
            var rMax = new Date(dateMin.getFullYear() + parseInt(ContractTerm), dateMin.getMonth(),dateMin.getDate() - 1); 
            $('#EndDate').val($.datepicker.formatDate('dd/mm/yy', new Date(rMax)));                    
        }
    }
});
});

Смотрите пример jSfiddle

Проблема в том, что вы объединяете строки. ContractTerm является строкой, представляющей то, что введено в текстовое поле. Вы должны преобразовать это в число:

var ContractTerm = +$('#contractlength').val();
var now = new Date();
        now.setFullYear(now.getFullYear() + 10);
        var futureYearLimit = now.getFullYear();

$( "#startdate, #EndDate" ).datepicker({
    defaultDate: "+1w",
    dateFormat: 'dd/mm/yy',
    changeMonth: true,
    numberOfMonths: 1,
    yearRange: "01/02/2013:" + futureYearLimit,
Другие вопросы по тегам