js自定义validate验证:验证日期是否在某一范围内

本文介绍如何使用JavaScript实现一个自定义验证功能,确保输入的日期是在当前日期之前的一个特定天数(例如30天)内。通过表单验证确保日志日期的有效性,提供可配置的天数限制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

需求:验证日志是否在30天(天数可以任意设置)之前

代码:form表单中的代码如下

<form id="inputForm"  action="/" method="post">
		
                <div>
			<label>选择日期: </label><input id="checkedDate" name="checkedDate" type="text" readonly="readonly"
				οnclick="WdatePicker({dateFmt:'yyyy-MM-dd',isShowClear:false});"/>
			<input type="submit" value="提交"/>
		</div>
</form>
form表单有一个选择日期的标签,一个提交的按钮。
js代码如下:
<script type="text/javascript">
	        //checkDate为自定义验证的方法名称,value为要被验证的值;param为参数,这里对应为30
		jQuery.validator.addMethod("checkDate", function(value, element, param) {
		        //取到选定的日期
		        var checkedDate= $("#checkedDate").val();
			var date = new Date();                        
                        //当前日期减去30天
                       date.setDate(date.getDate() - param);	
		        //日期格式化
			var date1= date.format("yyyy-MM-dd");
			//选则的日期
			var endTime = new Date(Date.parse(checkedDate));
			//当前时间减去30天后的时间
			var startTime = new Date(Date.parse(date1));
			if(endTime > startTime){
				return false;   
		    }else{
		    	return true;
		    }
		    
		}, $.validator.format("日期选择不符合要求")); 
	
		$(document).ready(function() {
			
			$("#inputForm").validate({
                             rules: {
                                 checkedDate:{
checkDate:30 } }, messages: { checkedDate:{ checkDate:"日期选择应早于当前日期前30天" } }, submitHandler: function(form){ form.submit();}});});
//日期格式化Date.prototype.format = function(fmt) { var o = { "M+" : this.getMonth()+1, //月份 "d+" : this.getDate(), //日 "h+" : this.getHours(), //小时 "m+" : this.getMinutes(), //分 "s+" : this.getSeconds(), //秒 "q+" : Math.floor((this.getMonth()+3)/3), //季度 "S" : this.getMilliseconds() //毫秒 }; if(/(y+)/.test(fmt)) { fmt=fmt.replace(RegExp.$1, (this.getFullYear()+"").substr(4 - RegExp.$1.length)); } for(var k in o) { if(new RegExp("("+ k +")").test(fmt)){ fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length))); } } return fmt; } </script>


效果:选择日期后,校验日期是否在30天以前,如果不是则显示错误信息,而且需要重新选择日期。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值