2

我正在使用一个日期选择器,并且有一个开始日期、合同长度(年)和结束日期。这些都是输入字段。当开始日期与合同长度一起选择时,它应该计算结束日期。

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

});

4

3 回答 3

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 示例

于 2013-02-09T16:51:47.677 回答
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,
于 2014-03-18T07:35:28.147 回答
0

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

var ContractTerm = +$('#contractlength').val();
于 2013-02-09T16:47:07.600 回答