2013-02-09 115 views
2

我正在使用日期选择器并且有一个startdate,contractlength(Years)和enddate。这些都是输入字段。当一个startdate与contractlength一起被选择时,它应该计算结束日期。jQuery add Year(s)date

因此,如果startdate是01/02/2013而contractlength是2(年),它应该计算endate是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)));      
     } 
    } 
}); 

});

回答

0

问题是你串联字符串。 ContractTerm是一个字符串,表示在文本框中输入的内容。你必须将其转换成一个数字:

var ContractTerm = +$('#contractlength').val(); 
1

尝试......

$(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 example

0
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,