2013-02-09 6 views
2

J'utilise un datepicker et ai un startdate, contractlength (Years) et enddate. Ce sont tous des champs de saisie. Lorsqu'un startdate est sélectionné avec une longueur de contrat, il doit calculer la date de fin.jQuery ajouter Année (s) à ce jour

Donc, si startdate est 01/02/2013 et que contractlength est 2 (Years), il devrait calculer la date de fin est 31/01/2015. J'ai créé un peu de jQuery et suis très proche, mais je n'arrive pas à obtenir le calcul correct en saisissant le contractlength à partir de l'entrée.

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)));      
     } 
    } 
}); 

});

Répondre

0

Le problème est que vous concattez des chaînes. ContractTerm est une chaîne représentant ce qui est entré dans la zone de texte. Vous devez convertir en un certain nombre:

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

Essayez cette ...

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

Voir 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, 
Questions connexes