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

来源:互联网 发布:程序员转行产品经理 编辑:程序博客网 时间:2024/05/16 02:23

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

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

<form id="inputForm"  action="/" method="post">                <div><label>选择日期: </label><input id="checkedDate" name="checkedDate" type="text" readonly="readonly"onclick="WdatePicker({dateFmt:'yyyy-MM-dd',isShowClear:false});"/><input type="submit" value="提交"/></div></form>
form表单有一个选择日期的标签,一个提交的按钮。
js代码如下:
<script type="text/javascript">        //checkDate为自定义验证的方法名称,value为要被验证的值;param为参数,这里对应为30jQuery.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天以前,如果不是则显示错误信息,而且需要重新选择日期。