我的页面中有2个datepickers
,我希望它们之间有1年的范围。
到目前为止,每当其中一个发生变化时,我会检查另一个值,然后我会根据它进行更新。
$("#DateFrom").datepicker().on("changeDate", function () {
var dt = new Date($(this).val());
dt.setFullYear(dt.getFullYear() + 1)
var updateDate = new Date(dt);
var dateFrom =$(this).val();
var dateTo = $("#DateTo").val();
if (new Date(dateFrom).getTime() > new Date(dateTo).getTime())
$('#DateTo').val('');
if (new Date(dateTo).getTime() > new Date(updateDate).getTime())
$('#DateTo').datepicker('setDate', updateDate);
});
$("#DateTo").datepicker().on("changeDate", function (e) {
var dt = new Date($(this).val());
dt.setFullYear(dt.getFullYear() - 1)
var updateDate = new Date(dt);
var dateTo = $(this).val();
var dateFrom = $("#DateFrom").val();
if (new Date(dateFrom).getTime() > new Date(dateTo).getTime()) {
$('#DateFrom').val('');
}
if (new Date(dateFrom).getTime() < new Date(updateDate).getTime()) {
$('#DateFrom').datepicker('setDate', updateDate);
}
});
如果您从datepicker
选择日期,它可以正常工作,但如果您尝试手动输入日期,则只要您输入内容并且计算错误的日期,事件就会触发。
例如,如果#DateFrom
值为01/01/2016
并且我将其手动更改为'01/01/2015'
,当我删除5时,该事件将当前日期视为01/01/201
并且它会将updateDate计算为01/01/202
。
用户完成输入后有没有办法触发事件?
提前谢谢。
答案 0 :(得分:0)
好的,似乎我通过改变
中的这些行来解决它$("#DateFrom").focusout(function ()
$("#DateTo").focusout(function ()
到
$("#DateFrom").focusout(function ()
$("#DateTo").focusout(function ()
.focusout()
事件似乎在用户从datepicker中选择日期或手动输入日期时效果很好。
如果有人有更好的实施,请发布。