/*! * 表单验证提交 基于jQuery Validation Plugin * author jindewen */ ;(function ($) { //基本提示翻译 $.extend($.validator.messages,{ required:"必须填写", remote:"请修正此栏位", email:"请输入有效的电子邮件", url:"请输入有效的网址", date:"请输入有效的日期", dateISO:"请输入有效的日期 (YYYY-MM-DD)", number:"请输入正确的数字", digits:"只可输入数字", creditcard:"请输入有效的信用卡号码", equalTo:"你的输入不相同", extension:"请输入有效的后缀", maxlength:$.validator.format("最多 {0} 个字"), minlength:$.validator.format("最少 {0} 个字"), rangelength:$.validator.format("请输入长度为 {0} 至 {1} 之间的字串"), range:$.validator.format("请输入 {0} 至 {1} 之间的数值"), max:$.validator.format("请输入不大于 {0} 的数值"), min:$.validator.format("请输入不小于 {0} 的数值") }); /** * 常用正则 * @param {string} pattern * @returns {RegExp} */ function getPattern(pattern) { switch (pattern) { case 'email': return /^\w+([-+.]\w+)*@\w+([-.]\w+)+$/i; case 'qq': return /^[1-9][0-9]{4,}$/i; case 'id': return /^\d{15}(\d{2}[0-9x])?$/i; case 'ip': return /^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/i; case 'zip': return /^\d{6}$/i; case 'mobi': return /^[0-9]{8,20}$/; case 'deskphone': return /^((\d{3,4})|\d{3,4}-)?\d{7,8}(-\d+)*$/i; case 'phone': return /^1\d{10}$/; case 'url': return /^[a-zA-z]+:\/\/(\w+(-\w+)*)(\.(\w+(-\w+)*))+(\/?\S*)?$/i; case 'date': return /^(?:(?!0000)[0-9]{4}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)-02-29)$/i; case 'datetime': return /^(?:(?!0000)[0-9]{4}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)-02-29) (?:(?:[0-1][0-9])|(?:2[0-3])):(?:[0-5][0-9]):(?:[0-5][0-9])$/i; case 'int': return /^\d+$/i; case 'float': case 'number': return /^\d+\.?\d*$/i; } return pattern; } //扩展验证插件的pattern属性 $.validator.addMethod("pattern", function (value, element) { var regexp = new RegExp(getPattern(element.pattern)); return this.optional(element) || regexp.test(value); }, "此字段格式不正确"); /*表单验证提交*/ var typeArr = ["error", "success"]; $("form").each(function(){ $(this).validate({ //验证提示 rules: { code: { required: true, }, phone:{ required: true, }, email:{ required: true, }, password: { required: true, }, re_password: { required: true, equalTo: "[name=password]" }, new_password: { required: true, }, old_password: { required: true, }, renew_password: { required: true, equalTo: "[name=new_password]" } }, messages: { code:{ required: '请输入或扫描积分码', pattern: '积分码只能数字', }, phone:{ required:'请输入手机号码', pattern:'请输入正确手机号码' }, email:{ required: '请输入电子邮箱', pattern: '电子邮箱格式错误', }, password: { required: "请输入登录密码", }, re_password: { required: "请输入确认密码", equalTo: "两次密码不一致" }, new_password: { required: '请输入新密码', }, old_password: { required: '请输入原密码', }, renew_password: { required: "请输入确认密码", equalTo: "两次密码不一致" } }, submitHandler:function(form){ var $form = $(form); if ($form.attr("ajax")) { $.ajax({ url:form.action, type:form.method, data:$form.serialize(), dataType: 'json', beforeSend:function(){ $.loader.show(); }, success:function(data){ swal({title:data.info,type:typeArr[data.status]},function(){ //url以javascript:开头,执行js,否则跳转页面 if (data.url.indexOf("javascript:") > -1) { eval(data.url); } else if (data.status) { data.url ? location.href = data.url : location.reload(); } }); }, error:function(XMLHttpRequest, textStatus, errorThrown){ swal({title:"服务器错误\n[ "+textStatus+" ]\n[ "+errorThrown+" ]",type:"error"}); }, complete:function(){ $.loader.hide(); } }); } else { form.submit(); } } }); }); }(jQuery));