• jQuery—validate验证框架的简单使用


    jQuery—validate验证框架

    简单的学习了一些jQuery—validate验证框架的基础知识,有些地方可能不妥,只是学到的个人理解

    准备

    首先要导入jar包:

    • 说明:
      • jquery-3.6.1.js:jquery框架(必须
      • jquery.validate.js:jquery验证框架(必须
      • messages_zh.js:将jquery验证框架中的默认提示变成中文(看个人需求,非必须)
      • validate-methods.js:jquery自带验证方法扩展(必须但不完全必须,里面有一些基础的验证方法,自己有下面的自定义的也可以不用
      • additional-methods.js:用于自己自定义扩展验证方法(看个人需求,非必须)
    • 注意:必须顺序不要乱
    <script type="text/javascript" src="js/jquery-3.6.1.js" ></script>			<!-- 引入jquery框架 -->
    <script type="text/javascript" src="js/jquery.validate.js" ></script>		<!-- 引入jquery验证框架 -->
    <script type="text/javascript" src="js/messages_zh.js" ></script>			<!-- 用于jquery验证框架默认提示变成中文,类似一个语言补丁 -->
    <script type="text/javascript" src="js/validate-methods.js" ></script>		<!-- jquery自带验证方法扩展 -->
    <script type="text/javascript" src="js/additional-methods.js"></script>		<!-- 用于自己自定义验证方法 -->
    
    • 1
    • 2
    • 3
    • 4
    • 5

    解释

    1.messages_zh.js文件中有默认的验证提示信息,可改可不改,但不推荐(尤其需要验证的页面多,全局默认提示都改了可能不方便)

    (function( factory ) {
    	if ( typeof define === "function" && define.amd ) {
    		define( ["jquery", "../jquery.validate"], factory );
    	} else {
    		factory( jQuery );
    	}
    }(function( $ ) {
    
    /*
     * Translated default messages for the jQuery validation plugin.
     * Locale: ZH (Chinese, 中文 (Zhōngwén), 汉语, 漢語)
     */
    $.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} 的数值")
    });
    
    }));
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33

    2.additional-methods.js:用于自己自定义扩展验证方法,去网上随便找了一些常用的可以简单参考一下

    //自己用于扩展的验证方法
    
    // 手机号码验证
    jQuery.validator.addMethod("mobile", function(value, element) {
        var length = value.length;
        var mobile =  /^(((13[0-9]{1})|(15[0-9]{1}))+\d{8})$/
        return this.optional(element) || (length == 11 && mobile.test(value));
    }, "手机号码格式错误");  
    
    // 电话号码验证   
    jQuery.validator.addMethod("phone", function(value, element) {
        var tel = /^(0[0-9]{2,3}\-)?([2-9][0-9]{6,7})+(\-[0-9]{1,4})?$/;
        return this.optional(element) || (tel.test(value));
    }, "电话号码格式错误");
    
    // 邮政编码验证   
    jQuery.validator.addMethod("zipCode", function(value, element) {
        var tel = /^[0-9]{6}$/;
        return this.optional(element) || (tel.test(value));
    }, "邮政编码格式错误");
    
    // QQ号码验证   
    jQuery.validator.addMethod("qq", function(value, element) {
        var tel = /^[1-9]\d{4,9}$/;
        return this.optional(element) || (tel.test(value));
    }, "qq号码格式错误");
    
    // IP地址验证
    jQuery.validator.addMethod("ip", function(value, element) {
        var ip = /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)/;     return this.optional(element) || (ip.test(value) && (RegExp./;     return this.optional(element) || (ip.test(value) && (RegExp.1 < 256 && RegExp.2 < 256 && RegExp.2 < 256 && RegExp.3 < 256 && RegExp.$4 < 256));
    }, "Ip地址格式错误");
    
    // 字母和数字的验证
    jQuery.validator.addMethod("chrnum", function(value, element) {
        var chrnum = /^([a-zA-Z0-9]+)$/;
        return this.optional(element) || (chrnum.test(value));
    }, "只能输入数字和字母(字符A-Z, a-z, 0-9)");
    
    // 中文的验证
    jQuery.validator.addMethod("chinese", function(value, element) {
        var chinese = /^[\u4e00-\u9fa5]+$/;
        return this.optional(element) || (chinese.test(value));
    }, "只能输入中文");
    
    // 下拉框验证
    $.validator.addMethod("selectNone", function(value, element) {
        return value == "请选择";
    }, "必须选择一项");
    
    // 字节长度验证
    jQuery.validator.addMethod("byteRangeLength", function(value, element, param) {
        var length = value.length;
        for (var i = 0; i < value.length; i++) {
            if (value.charCodeAt(i) > 127) {
                length++;
            }
        }
        return this.optional(element) || (length >= param[0] && length <= param[1]);
    }, $.validator.format("请确保输入的值在{0}-{1}个字节之间(一个中文字算2个字节)"));
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59

    具体使用

    form表单

    菜鸟教程里简单搞了一个基础的form表单

    <form class="cmxform" id="commentForm" method="get" action="">
    	<fieldset>
            <legend>输入您的名字,邮箱,URL,备注。legend>
            <p>
                <label for="cname">Name (必需, 最小两个字母)label>
                <input id="cname" name="name" type="text">
            p>
            <p>
                <label for="cemail">E-Mail (必需)label>
                <input id="cemail" type="email" name="email">
            p>
            <p>
                <label for="curl">URL (可选)label>
                <input id="curl" type="text" name="url">
            p>
            <p>
                <label for="ccomment">备注 (必需)label>
                <textarea id="ccomment" name="comment">textarea>
            p>
            <p>
                <label for="cname">电话label>
                <input id="mobile" name="mobile" type="text">
            p>
            <p>
                <input class="submit" type="submit" value="Submit">
            p>
    	fieldset>
    form>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28

    js代码

    1.用于提交事件

    $.validator.setDefaults({
    				    submitHandler: function() {
    				      alert("提交事件!");
    				    }
    				});
    
    • 1
    • 2
    • 3
    • 4
    • 5

    2.规则和提示信息

    $().ready(function() {
    //				onfocusout:false,
    //				onsubmit:false,
    			  $("#commentForm").validate({
    			  	
    			  	//给验证设置样式
    			  	errorClass: "error",	//错误时css样式
       				validClass:"success",	//正确时css样式
       				errorElement: "span",	//错误设置元素为span(设置啥标签都行,自己看着办)
       				//验证成功样式
    			    success: function(label) {
    			      //label指向上面那个错误提示信息标签span
    			      label.text("正确")        //清空错误提示消息
    			      .addClass("success");  //加上自定义的success类
    			    }, 
    
    				//设置验证规则
    			    rules: {
    			      name: "required",
    			      email: "required",
    			      comment: "required",
    			      name: {
    			        required: true,
    			        minlength: 2
    			      },
    			      url: {
    			      	url:true
    			      },
    			      email: {
    			        required: true,
    			        email: true
    			      },
    			      comment: {
    			        required: true,
    			        minlength: 2
    			      },
    			      mobile: {
    			      	mobile: true
    			      },
    			      agree: "required"
    			    },
    			    
    			    //设置验证规则的信息提示
    			    messages: {
    			      name: {
    			        required: "请输入用户名",
    			        minlength: "用户名必需由两个字符组成"
    			      },
    			      url: {
    			      	url:"输入的url格式不正确..."
    			      },
    			      email:{
    			      	required:"邮箱是必须要填的!",
    			      	email:"请输入一个正确的邮箱"   	
    			      },
    			      comment:{
    			      	required:"备注也是必须要填的!",
    			      	minlength:"最小要写两个字符"
    			      }
    			     }
    
    			    })
    });
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63

    完整示例

    <!DOCTYPE html>
    <html>
    	<head>
    		<meta charset="utf-8" />
    		<title>简单的jquery验证表单</title>
    		<style>
    			span.error {
    				color: red;
    			}
    			
    			span.success {
    				color: green;
    			}
    		</style>
    	</head>
    	<body>
    		<script type="text/javascript" src="js/jquery-3.6.1.js" ></script>			<!-- 引入jquery框架 -->
    		<script type="text/javascript" src="js/jquery.validate.js" ></script>		<!-- 引入jquery验证框架 -->
    		<script type="text/javascript" src="js/messages_zh.js" ></script>			<!-- 用于jquery验证框架默认提示变成中文,类似一个语言补丁 -->
    		<script type="text/javascript" src="js/validate-methods.js" ></script>		<!-- jquery自带验证方法扩展 -->
    		<script type="text/javascript" src="js/additional-methods.js"></script>		<!-- 用于自己自定义验证方法 -->
    		
    		<form class="cmxform" id="commentForm" method="get" action="">
    		  <fieldset>
    		    <legend>输入您的名字,邮箱,URL,备注。</legend>
    		    <p>
    		      <label for="cname">Name (必需, 最小两个字母)</label>
    		      <input id="cname" name="name" type="text">
    		    </p>
    		    <p>
    		      <label for="cemail">E-Mail (必需)</label>
    		      <input id="cemail" type="email" name="email">
    		    </p>
    		    <p>
    		      <label for="curl">URL (可选)</label>
    		      <input id="curl" type="text" name="url">
    		    </p>
    		    <p>
    		      <label for="ccomment">备注 (必需)</label>
    		      <textarea id="ccomment" name="comment"></textarea>
    		    </p>
    		    <p>
    		      <label for="mobile">电话</label>
    		      <input id="mobile" name="mobile">
    		    </p>
    		    <p>
    		      <input class="submit" type="submit" value="提交">
    		    </p>
    		  </fieldset>
    		</form>
    		<script>
    			$.validator.setDefaults({
    				 	//debug: true, //调试模式取消submit的默认提交功能    
    				    submitHandler: function() {
    				      alert("提交事件!");
    				    }
    				});
    
    			$().ready(function() {
    //				onfocusout:false,
    //				onsubmit:false,
    			  $("#commentForm").validate({
    			  	
    			  	//给验证设置样式
    			  	errorClass: "error",	//错误时css样式
       				validClass:"success",	//正确时css样式
       				errorElement: "span",	//错误设置元素为span(设置啥标签都行,自己看着办)
       				//验证成功样式
    			    success: function(label) {
    			      //label指向上面那个错误提示信息标签span
    			      label.text("正确")        //清空错误提示消息
    			      .addClass("success");  //加上自定义的success类
    			    }, 
    
    				//设置验证规则
    			    rules: {
    			      name: "required",
    			      email: "required",
    			      comment: "required",
    			      name: {
    			        required: true,
    			        minlength: 2
    			      },
    			      url: {
    			      	url:true
    			      },
    //			      password: {
    //			        required: true,
    //			        minlength: 5
    //			      },
    //			      confirm_password: {
    //			        required: true,
    //			        minlength: 5,
    //			        equalTo: "#password"	//是否等于原来的密码
    //			      },
    			      email: {
    			        required: true,
    			        email: true
    			      },
    			      comment: {
    			        required: true,
    			        minlength: 2
    			      },
    			      mobile: {
    			      	mobile: true
    			      },
    			      agree: "required"
    			    },
    			    
    			    //设置验证规则的信息提示
    			    messages: {
    //			      firstname: "请输入您的名字",
    //			      lastname: "请输入您的姓氏",
    			      name: {
    			        required: "请输入用户名",
    			        minlength: "用户名必需由两个字符组成"
    			      },
    			      url: {
    			      	url:"输入的url格式不正确..."
    			      },
    //			      password: {
    //			        required: "请输入密码",
    //			        minlength: "密码长度不能小于 5 个字符"
    //			      },
    //			      confirm_password: {
    //			        required: "请输入密码",
    //			        minlength: "密码长度不能小于 5 个字符",
    //			        equalTo: "两次密码输入不一致"
    //			      },
    			      email:{
    			      	required:"邮箱是必须要填的!",
    			      	email:"请输入一个正确的邮箱"   	
    			      },
    			      comment:{
    			      	required:"备注也是必须要填的!",
    			      	minlength:"最小要写两个字符"
    			      }
    //			      agree: "请接受我们的声明",
    //			      topic: "请选择两个主题"
    			     }
    
    			    })
    			});
    
    		</script>
    	</body>
    </html>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 129
    • 130
    • 131
    • 132
    • 133
    • 134
    • 135
    • 136
    • 137
    • 138
    • 139
    • 140
    • 141
    • 142
    • 143
    • 144
    • 145
    • 146
    • 147

    发现自定义的验证方法未知原因有时会失效,过阵子再搞。

  • 相关阅读:
    Eclipse插件开发demo
    代码随想录算法训练营第二十五天| LeetCode216. 组合总和 III、LeetCode17. 电话号码的字母组合
    文心一言 VS ChatGPT-4
    docker部署rabbitmq的坑
    基于VUE + Echarts 实现可视化数据大屏环保可视化
    【CSS】字体图标与favicon图标
    铁路设备屡遭破坏!RFID电子锁实现铁路防护网破坏实时报警管理
    jupyter/scipy-notebook:python3.8 docker 镜像
    LeetCode 566. Reshape the Matrix
    ❤网络跨域报错篇http
  • 原文地址:https://blog.csdn.net/weixin_55452293/article/details/126945701