我正在使用一个datepicker并且有一个startdate,contractlength(Years)和enddate。这些都是输入字段。当选择一个startdate和一个contractlength时,它应该计算结束日期。
因此,如果startdate是01/02/2013且contractlength是2(年),那么它应该计算的结果是31/01/2015。我创建了一些jQuery并且非常接近,但是当从输入中获取contractlength时,无法正确计算endate。
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 :(得分: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)));
}
}
});
});
答案 1 :(得分:0)
问题在于你是在连接字符串。 ContractTerm
是一个字符串,表示在文本框中输入的内容。您必须将其转换为数字:
var ContractTerm = +$('#contractlength').val();
答案 2 :(得分: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,