本文介绍如何通过JavaScript实现开始时间与结束时间的动态联动校验,限制时间差为30天,并提供完整的HTML输入框、JS逻辑及Java后端初始化代码示例。
JS动态校验开始与结束时间的实现方案
在实际开发中,经常需要动态校验开始时间和结束时间。如果每次都要重新编写相关逻辑,会显得非常繁琐。为了方便后续直接复制使用,这里整理了一套完整的实现方案。
这段代码的主要功能是:
实现开始时间与结束时间的联动。当用户修改开始时间时,结束时间会自动相应调整,且两者之间的时间差固定为30天。
HTML部分:
<input type="date" placeholder="请输入(From)..." id="txtStartDate" value="${startDate }" onblur="onblurStartDate();" />
<input type="date" placeholder="请输入(To)..." id="txtEndDate" value="${endDate }" onblur="onblurEndDate();" />
JavaScript部分:
<script type="text/javascript">
/**
* 动态校验开始时间
* @returns
*/
function onblurStartDate() {
var startDateStr = $("#txtStartDate").val();
var nowDate = new Date().toISOString().substring(0, 10); //当前时间截取操作
var endDateStr = addDate(startDateStr, 29);
if(startDateStr >= nowDate) {
alert("开始时间不能大于等于今天!");
var endDate = addDate(nowDate, -29);
$("#txtStartDate").val(endDate);
return;
}
if(endDateStr >= nowDate) {
$("#txtEndDate").val(nowDate);
return false;
}
$("#txtEndDate").val(endDateStr);
}
/**
* 动态校验结束时间
* @returns
*/
function onblurEndDate() {
var endDateStr = $("#txtEndDate").val();
var nowDate = new Date().toISOString().substring(0, 10); //当前时间截取操作
if(endDateStr > nowDate) {
alert("结束时间不能大于今天!");
$("#txtEndDate").val(nowDate);
var startDate = addDate(nowDate, -29);
$("#txtStartDate").val(startDate);
return false;
}
var startDateStr = addDate(endDateStr, -29);
$("#txtStartDate").val(startDateStr);
}
/**
* 日期加减法 格式:addDate('2017-01-11',20)
* @param date计算开始的日期
* @param days需要加的天数 (正数加,负数减)
* @returns 计算后的时间
*/
function addDate(date, days) {
var d = new Date(date);
d.setDate(d.getDate() + parseInt(days));
var m = d.getMonth() + 1;
m = parseInt(m) < 10 ? ('0' + m) : m;
var day = parseInt(d.getDate()) < 10 ? ('0' + d.getDate()) : d.getDate();
return d.getFullYear() + '-' + m + '-' + day;
}
</script>
Java后端部分:
/**
* 页面初始化+指定时间
* @param request
* @param response
* @return
*/
@RequestMapping(value = { "/pageInit.do" })
protected String pageInit(final HttpServletRequest request, final HttpServletResponse response) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
request.setAttribute("startDate", sdf.format(TimeUtils.addDate(new Date(), -29)));
request.setAttribute("endDate", sdf.format(new Date()));
return "taskManage/taskindex";
}
总结
至此,关于JS动态校验开始与结束时间的介绍完毕。如需了解更多相关内容,可搜索本站过往文章或继续浏览其他文章。希望大家今后能多多支持本站!