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();" />

js:

<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";
}

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
要在 vxe-table 中封装一个自定义的校验规则来判断开始时间不能晚于结束时间结束时间不能早于开始时间,你可以按照以下步骤进行操作: 1. 首先,在你的 Vue 组件中定义一个自定义的校验规则方法。例如: ```javascript methods: { validateTime(rule, value, callback, row) { if (row.start && row.end && row.start > row.end) { callback(new Error('开始时间不能晚于结束时间')); } else if (row.start && row.end && row.start < row.end) { callback(new Error('结束时间不能早于开始时间')); } else { callback(); } } } ``` 2. 在表格的列定义中,为开始时间结束时间的列添加校验规则属性,并指定自定义的校验规则方法。例如: ```html <vxe-table-column field="start" title="开始时间" :edit-render="{ name: 'DatePicker' }"> <template #valid="{ row, column }"> <span v-if="column.cellType === 'edit' && column.editRender && column.editRender.name === 'DatePicker'"> <span v-if="row.$invalid.start">{{ row.$invalid.start.message }}</span> </span> </template> <template #validError="{ err }"> <span>{{ err.message }}</span> </template> <template #validMethod="validateTime"></template> </vxe-table-column> <vxe-table-column field="end" title="结束时间" :edit-render="{ name: 'DatePicker' }"> <template #valid="{ row, column }"> <span v-if="column.cellType === 'edit' && column.editRender && column.editRender.name === 'DatePicker'"> <span v-if="row.$invalid.end">{{ row.$invalid.end.message }}</span> </span> </template> <template #validError="{ err }"> <span>{{ err.message }}</span> </template> <template #validMethod="validateTime"></template> </vxe-table-column> ``` 在上面的代码中,我们使用了 v-if 条件判断来根据校验结果显示对应的错误提示信息。同时,我们还使用了 vxe-table 的验证错误模板来显示错误信息。 现在,当用户输入开始时间结束时间时,如果不符合校验规则,将会显示相应的错误提示信息。 这是一个简单的示例,你可以根据你的实际需求进行修改和扩展。希望对你有帮助!如果还有其他问题,请继续提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值