jquery-validation使用
该前端验证有两种使用方式,一种校验条件写在标签内部的class属性里,另一种是将校验写在js代码中。
第一种方式 写在标签中能够很直观的展现表单标签的检验,我觉得对于标签比较多的时候适合使用这种。
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>标签的方式验证</title> <!--引入js--> <script src="https://code.jquery.com/jquery-3.2.1.min.js"></script> <script src="js/jquery.validate.min.js"></script> <!--自定义验证js其中有手机验证和身份证验证--> <script src="js/user_defined_validate.js"></script> <!--中文提示信息js--> <script src="js/message_cn.js"></script> </head> <body> <form action="#" method="post" id="formT"> <label>密码:</label> <input type="password" name="password" id="password" class="required" /><br /> <!--必填和邮箱验证--> <label>邮箱:</label> <input type="text" name="email" id="email" class="required email" /><br /> <!--手机号验证--> <label>手机:</label> <input type="text" name="phone" id="phone" class="isPhone" /><br /> <label>一线城市:</label><br /> <input type="checkbox" id="shenzhen" name="citys" value="shenzhen" class="required minlength:2" /> <input type="checkbox" id="shanghai" name="citys" value="上海" /> <input type="checkbox" id="hangzhou" name="citys" value="hz" /> <input type="checkbox" id="beijing" name="citys" value="peking" /> <br /> <input type="submit" value="提交" /> </form> <script> //页面加载后进行验证 $().ready(function() { $("#formT").validate({ //设置表单点击体积submit后不提交 debug:true }); }); </script> </body> </html>
第二种写在js代码中:
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <script src="https://code.jquery.com/jquery-3.2.1.min.js"></script> <script src="js/jquery.validate.min.js"></script> <script src="js/user_defined_validate.js"></script> <script> $().ready(function(){ var validate = $("#formT").validate({ //调试模式为true会取消submit的默认提交功能 debug: true, //errorClass: "label.error", //默认为错误的样式类为:error //当为false时,验证无效时,没有焦点响应 focusInvalid: false, onkeyup: false, submitHandler: function(form) { alert('提交表单!'); form.submit(); }, //校验规则 rules: { password: { required: true, rangelength: [4, 10] }, email: { required: true, email: true }, phone: { required: true, isPhone:true } , sex:{ required:true } }, //对应规则给出的提示信息 messages:{ password:{ required: '必填', rangelength:$.validator.format("密码最小长度:{4},最大长度{10}") }, email:{ required:"必填", email:"请输入正确的email格式!" }, phone:{ required:"必填想", isPhone:"请输入正确的手机号!" } , sex:{ required:"必填" } } }); }); </script> <title></title> </head> <body> <form action="#" method="post" id="formT"> <label>密码:</label><input type="password" name="password" id="password" /> <br /> <label>邮箱:</label><input type="text" name="email" id="email" /><br /> <label>手机:</label><input type="text" name="phone" id="phone" /><br /> <label>性别:</label><br /> <label>男:</label> <input type="checkbox" name="male" id="male" value="sex"/> <label>女:</label> <input type="checkbox" name="female" id="female" value=""/> <br /> <input type="submit" value="提交" /> </form> </body> </html>
说明文件:默认校验规则:
(1)required:true 必输字段 (2)remote:"check.php" 使用ajax方法调用check.php验证输入值 (3)email:true 必须输入正确格式的电子邮件 (4)url:true 必须输入正确格式的网址 (5)date:true 必须输入正确格式的日期 (6)dateISO:true 必须输入正确格式的日期(ISO),例如:2009-06-23,1998/01/22 只验证格式,不验证有效性 (7)number:true 必须输入合法的数字(负数,小数) (8)digits:true 必须输入整数 (9)creditcard: 必须输入合法的信用卡号 (10)equalTo:"#field" 输入值必须和#field相同 (11)accept: 输入拥有合法后缀名的字符串(上传文件的后缀) (12)maxlength:5 输入长度最多是5的字符串(汉字算一个字符) (13)minlength:10 输入长度最小是10的字符串(汉字算一个字符) (14)rangelength:[5,10] 输入长度必须介于 5 和 10 之间的字符串")(汉字算一个字符) (15)range:[5,10] 输入值必须介于 5 和 10 之间 (16)max:5 输入值不能大于5 (17)min:10 输入值不能小于10
默认提示:
messages: { required: "This field is required.", remote: "Please fix this field.", email: "Please enter a valid email address.", url: "Please enter a valid URL.", date: "Please enter a valid date.", dateISO: "Please enter a valid date (ISO).", dateDE: "Bitte geben Sie ein g眉ltiges Datum ein.", number: "Please enter a valid number.", numberDE: "Bitte geben Sie eine Nummer ein.", digits: "Please enter only digits", creditcard: "Please enter a valid credit card number.", equalTo: "Please enter the same value again.", accept: "Please enter a value with a valid extension.", maxlength: $.validator.format("Please enter no more than {0} characters."), minlength: $.validator.format("Please enter at least {0} characters."), rangelength: $.validator.format("Please enter a value between {0} and {1} characters long."), range: $.validator.format("Please enter a value between {0} and {1}."), max: $.validator.format("Please enter a value less than or equal to {0}."), min: $.validator.format("Please enter a value greater than or equal to {0}.") }
中文默认提示添加js:
jQuery.extend(jQuery.validator.messages, { required: "此内容为必填项,请输入!", remote: "内容输入错误!", email: "E-mail格式错误,请重新输入!", url: "网址格式错误,请重新输入!", date: "日期格式错误,请重新输入!", dateISO: "日期格式错误,请重新输入!", number: "请输入合法的数字!", digits: "请输入零或正整数!", creditcard: "信用卡号格式错误,请重新输入!", equalTo: "两次输入不一致,请重新输入!", accept: "请输入拥有合法后缀名的字符串!", maxlength: jQuery.validator.format("字符串长度不能大于{0}!"), minlength: jQuery.validator.format("字符串长度不能小于{0}!"), rangelength: jQuery.validator.format("字符串长度只允许在{0}-{1}之间!"), range: jQuery.validator.format("输入的数值只允许在{0}-{1}之间!"), max: jQuery.validator.format("输入的数值不允许大于{0}!"), min: jQuery.validator.format("输入的数值不允许小于{0}!"), integer: "请输入合法的整数!", positive: "请输入合法的正数!", positiveInteger: "请输入合法的正整数!", mobile: "手机号码格式错误,请重新输入!", phone: "电话号码格式错误,请重新输入!", zipCode: "邮政编码格式错误,请重新输入!", requiredTo: "此内容为必填项,请输入!", username: "只允许包含中文、英文、数字和下划线!", prefix: "请输入以 {0} 开头的字符串!", lettersonly: "只允许包含字母!" });
自定义校验js:
//验证手机 jQuery.validator.addMethod("isPhone", function(value, element) { var length = value.length; var mobile = /^(((13[0-9]{1})|(15[0-9]{1})|(18[0-9]{1})|(17[0-9]{1}))+\d{8})$/; return this.optional(element) || (length == 11 && mobile.test(value)); }, "请填写正确的手机号码"); //可以自定义默认提示信息
实例测试:jqvalidationtest.zip