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

問題は、文字列を連結していることです。ContractTermテキストボックスに入力された内容を表す文字列です。それを数値に変換する必要があります:

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