Javascript 如何在选择开始日期时自动显示截止日期

Javascript 如何在选择开始日期时自动显示截止日期,javascript,jquery,laravel,Javascript,Jquery,Laravel,我有一个从数据库表中获取值的select。金额选择中有五种价格,所选价格将具有不同的截止年份。我想做的是,当我选择金额,然后选择开始日期之后,截止日期将根据要计算的表列年份自动出来。我应该用Javascript写什么 这是我的申请表 这是我的剧本 对于“选择”下拉列表: <div class="form-group row mb-2"> <label for="gylight_amount" class="col-

我有一个从数据库表中获取值的select。金额选择中有五种价格,所选价格将具有不同的截止年份。我想做的是,当我选择金额,然后选择开始日期之后,截止日期将根据要计算的表列年份自动出来。我应该用Javascript写什么

这是我的申请表

这是我的剧本

对于“选择”下拉列表:

<div class="form-group row mb-2">
       <label for="gylight_amount" class="col-sm-4 col-form-label">Amount:</label>
         <div class="col-sm-8">
              <select name="gylight_amount" id="gylight_amount" class="form-control">
                <option>Choose amount</option>
                  @foreach ($gyprice as $item)
                <option data-years="{{$item->years}}" value="{{ $item->gylight_amount }}">                
                  RM{{ $item->gylight_amount }}
                </option>
                  @endforeach
              </select>
          </div>
  </div>
Jquery代码:尝试以下代码,您将获得所选选项的年份

 $("#gylight_amount, #gylight_sDate").change( function () {

    var str = $("#gylight_sDate").val();
    var duration = $("#gylight_amount").find(':selected').data('years');

    if( /^\d{2}\/\d{2}\/\d{4}$/i.test( str ) ) {

        var parts = str.split("/");

        var day = parts[0] && parseInt( parts[0], 10 );
        var month = parts[1] && parseInt( parts[1], 10 );
        var year = parts[2] && parseInt( parts[2], 10 );

        if( day <= 31 && day >= 1 && month <= 12 && month >= 1 ) {

            var expiryDate = new Date( year, month - 1, day );
            expiryDate.setFullYear( expiryDate.getFullYear() + duration );

            var day = ( '0' + expiryDate.getDate() ).slice( -2 );
            var month = ( '0' + ( expiryDate.getMonth() + 1 ) ).slice( -2 );
            var year = expiryDate.getFullYear();

            $("#gylight_eDate").val( day + "/" + month + "/" + year );

        } else {
            // display error message
        }
    }
});

我得到了年份值,但是当结果出来时,只有年份是正确的,月份和日期是错误的,请帮我看看,我已经更新了。你想要什么月份和日期的值?明年的同一天和同一个月。例如,2020年2月11日,加上1年,我希望到期日为2021年2月11日
public function view(Light $light){

    $gylight = Guanyin::latest()->first()->orderBy('id','desc')->get();
    $gyprice = Gyprice::latest()->first()->orderBy('id','asc')->get();

    return view('admin.light.view',[
        'light' => $light,
        'gylight' => $gylight,
        'gyprice' =>$gyprice,
    ]);
}
<script>
    $('#gylight_amount').on('change', function() {
     var year = $(this).find(':selected').data('years');
     var amount = $('#gylight_amount').val();
     var startDate = $('#gylight_sDate').val();

     var date = new Date(startDate);

     var yyyy = date.getFullYear() + year;
     var m = date.getMonth();
     var d = date.getDate();

     $("#gylight_eDate").val(d + "/" + m + "/" + yyyy);

     });
</script>
<div class="form-group row mb-2">
       <label for="gylight_amount" class="col-sm-4 col-form-label">Amount:</label>
         <div class="col-sm-8">
              <select name="gylight_amount" id="gylight_amount" class="form-control">
                <option>Choose amount</option>
                  @foreach ($gyprice as $item)
                <option data-years="{{$item->years}}" value="{{ $item->gylight_amount }}">                
                  RM{{ $item->gylight_amount }}
                </option>
                  @endforeach
              </select>
          </div>
  </div>
 $("#gylight_amount, #gylight_sDate").change( function () {

    var str = $("#gylight_sDate").val();
    var duration = $("#gylight_amount").find(':selected').data('years');

    if( /^\d{2}\/\d{2}\/\d{4}$/i.test( str ) ) {

        var parts = str.split("/");

        var day = parts[0] && parseInt( parts[0], 10 );
        var month = parts[1] && parseInt( parts[1], 10 );
        var year = parts[2] && parseInt( parts[2], 10 );

        if( day <= 31 && day >= 1 && month <= 12 && month >= 1 ) {

            var expiryDate = new Date( year, month - 1, day );
            expiryDate.setFullYear( expiryDate.getFullYear() + duration );

            var day = ( '0' + expiryDate.getDate() ).slice( -2 );
            var month = ( '0' + ( expiryDate.getMonth() + 1 ) ).slice( -2 );
            var year = expiryDate.getFullYear();

            $("#gylight_eDate").val( day + "/" + month + "/" + year );

        } else {
            // display error message
        }
    }
});