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