Javascript 月份范围仅应在所选月份后的9个月内
我有两个月和一年的范围。开始和结束范围 如果选择结束日期2016年6月2日开始日期,则应为过去9个月 如果我选择错误,我将收到错误消息。我做了,但它不起作用。请帮助任何人 有效条件: 示例:Javascript 月份范围仅应在所选月份后的9个月内,javascript,jquery,jquery-ui,Javascript,Jquery,Jquery Ui,我有两个月和一年的范围。开始和结束范围 如果选择结束日期2016年6月2日开始日期,则应为过去9个月 如果我选择错误,我将收到错误消息。我做了,但它不起作用。请帮助任何人 有效条件: 示例: End Date :sep2016. Start Date :Dec2015 应接受同一月份: End Date :sep2016. Start Date :sep2016 无效条件: 示例: End Date :sep2016. Start Date
End Date :sep2016.
Start Date :Dec2015
应接受同一月份:
End Date :sep2016.
Start Date :sep2016
无效条件:
示例:
End Date :sep2016.
Start Date :oct2016
HTMl:
Javascript:
var $monthStart = $('#monthStart'),
$yearStart = $('#yearStart'),
$monthEnd = $('#monthEnd'),
$yearEnd = $('#yearEnd');
$(document).on('change','#monthEnd,#monthStart,#yearEnd,#yearStart', function() {
var startM = parseInt($monthStart.val()),
endM = parseInt($monthEnd.val()),
diffY = $yearEnd.val() - $yearStart.val(),
diffM = $monthEnd.val() - $monthStart.val();
if ((diffY == 0 && diffM < 0) ||(diffY == 0 && diffM >= 9) ||(diffY == 1 && diffM >= 9) || (diffY < 0) || (diffY > 1) || (diffY == 1 && diffM > -10)) {
alert("Selected range is not correct bcoz that range is not within 9 months from back");
} else {
alert("Selected range correct bcoz that range is within 9 months from back");
}
});
试试下面的代码
$(document).ready(function () {
var $monthStart = $('#monthStart'),
$yearStart = $('#yearStart'),
$monthEnd = $('#monthEnd'),
$yearEnd = $('#yearEnd');
$(document).on('change', '#monthEnd,#monthStart,#yearEnd,#yearStart', function () {
if ($monthStart.val() != 'def' && $monthEnd.val() != 'def' && $yearStart.val() != 'def' && $yearEnd.val() != 'def') {
var startM = parseInt($monthStart.val()),
endM = parseInt($monthEnd.val()),
diffY = $yearEnd.val() - $yearStart.val(),
diffM = $monthEnd.val() - $monthStart.val();
if (validate(diffY, startM, endM)) {
alert("Selected range is not correct bcoz that range is not within 9 months from back");
}
else {
alert("Selected range correct bcoz that range is within 9 months from back");
}
}
});
function validate(diffY, startM, endM) {
var diffM = (endM + (diffY * 12)) - startM;
alert(endM + (diffY * 12));
alert(diffY);
alert(diffM);
if (diffM > 9 || diffM < 0)
return true;
else
return false;
}
});
及
设置起始年选项的值,如下所示
<option selected="selected" value="def">Year</option>
问题是,在填充所有四个输入后,需要检查范围是否正确,并且需要将$yearEnd.val-$yearStart.val转换为整数 $document.on'change',monthEnd,monthStart,yearEnd,yearStart',函数{ 变量$monthStart=$'monthStart', $yearStart=$'yearStart', $monthEnd=$monthEnd', $yearEnd=$'yearEnd'; 如果$monthEnd.val&&$yearEnd.val&&$monthStart.val&&&$yearStart.val&&$yearStart.val{ var diffY=parseInt$yearStart.val-$yearEnd.val, diffM=parseInt$monthStart.val-$monthEnd.val;
如果diffY==0&&diffM>=-9&&diffM=3&&diffM为了简化逻辑,您可以比较从AD开始的总月数。还可以添加验证,验证所有字段在开始时设置:
<option selected="selected" value="def">Year</option>
var $monthStart = $('#monthStart'),
$yearStart = $('#yearStart'),
$monthEnd = $('#monthEnd'),
$yearEnd = $('#yearEnd');
$(document).on('change','#monthEnd,#monthStart,#yearEnd,#yearStart', function() {
if([$yearStart,$yearEnd,$monthStart,$monthEnd].some(f => isNaN(f.val())))
return;
let diff = ($yearEnd.val()-$yearStart.val())*12 + $monthEnd.val()-$monthStart.val()
if(diff>=0 && diff<=9)
alert(`Selected range correct bcoz that range is within 9 months from back: ${diff}`);
else
alert(`Selected range is not correct bcoz that range is not within 9 months from back: ${diff}`);
});