需求:验证日志是否在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: {
checkDate:30 } }, messages: { checkedDate:{ checkDate:"日期选择应早于当前日期前30天" } }, submitHandler: function(form){ form.submit();}});});checkedDate:{
//日期格式化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天以前,如果不是则显示错误信息,而且需要重新选择日期。