zoukankan      html  css  js  c++  java
  • jquery.validate

    jquery.validate 学习笔记(验证form表单工具)

    在网上找了一些资料,很多对表单验证的工具需要指明表单的控件的name 或者 id,就需要自己写JS代码来指明哪些控件需要添加校验,如果页面很多,自己JS的工作量还是比较大的,还不如自己写代码去校验,因此我选择了jquery.validate.js这个工具,它只需要在控件中添加对应的属性就可以了,不需要再写JS代码去指明哪些控件需要校验表单内容。

    修改默认提示信息的方法

    /* 默认提示信息
    var 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}.")
    }
    */
    
    jQuery.extend(jQuery.validator.messages, {
    	  required: "必选字段",
    	  remote: "请修正该字段",
    	  email: "请输入正确格式的电子邮件",
    	  url: "请输入合法的网址",
    	  date: "请输入合法的日期",
    	  dateISO: "请输入合法的日期 (ISO).",
    	  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} 的值")
    	});

    自己写的demo,仅仅是在控件端添加属性验证表单内容

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <script type="text/javascript" src="js/util/jquery-1.4.4.js"></script>
    <script type="text/javascript" src="js/util/jquery.validate.min.js"></script>
    <title>Insert title here</title>
    </head>
    <body>
    
    <br>
    
    <form action="" id="myform">
    <fieldset>
    	必须填写:<br>
    	<input type="text" name="a" required><br>
    	<br>
    	
    	minlength="2"  maxlength="5" 必须填写,最小长度是2,最大长度是5:(汉字算一个字符)<br>
    	<input id="cname" name="name" minlength="2" minlength="2"  maxlength="5" type="text"  /><br>
    	<br>
    	
    	rangelength="5,10"   输入的内容长度必须在5-10之间:(汉字算一个字符)<br>
    	<input id="range" name="range" rangelength="5,10" /><br>
    	<br>
    	
    	min="11" max="22"  必须填写,数字最小值为11,最大值为22:<br>
    	<input id="num" name="num" min="11" max="22" type="text"  /><br>
    	<br>
    	
    	range="11,22" 必须填写,数字最小值为11,最大值为22:<br>
    	<input id="num1" name="num1" range="11,22" type="text"  /><br>
    	<br>
    	
    	equalTo="#mypassword" 两个密码一致校验:<br>
    	mypassword:<input id="mypassword" name="mypassword" type="password"  /><br>
    	repassword:<input id="repassword" name="repassword" type="password" equalTo="#mypassword" /><br>
    	<br>
    	
    	number="true" 必须输入合法的数字:必须输入合法的数字(负数,小数) <br>
    	<input id="number" name="number"   number="true" /><br>
    	<br>
    	
    	digits="true" 必须输入整数:<br>
    	<input type="text" digits="true" name="integer" id="integer" ><br>
    	<br>
    	
    	email="true" EMAIL:<br>
    	<input type="text" email="true" name="email" id="email" ><br>
    	<br>
    	
    	url="true"   URL:(要有http(s)://www)<br>
    	<input type="text" url="true" name="url" id="url" ><br>
    	<br>
    	
    	date="true"   DATE日期:(2003/9/9),值校验格式,不会校验里面的数据,因此详细内容还是要自己校验<br>
    	<input type="text" date="true" name="date" id="date" ><br>
    	<br>
    	
    	dateISO="true"  dateISO日期:值校验格式,不会校验里面的数据,因此详细内容还是要自己校验<br>
    	<input type="text" dateISO="true" name="dateISO" id="dateISO" ><br>
    	<br>
    	
    	<font color="red">对上传文件格式进行校验:(这个问题还等待解决)</font><br>
    	<input type="file" accept="png|txt" name="accept" id="accept" required><br>
    	<input type="text" accept=".ppp" name="accept1" id="accept1" required><br>
    	<br>
    	
    	<font color="red">备注:表单的id 和 name必须唯一,否则无法正确校验。</font>
    		
    	<input class="submit" type="submit" value="Submit"/>
    	</fieldset>
    </form>
    
    
    
    </body>
    </html>
    <script>
    
    
    $(function(){
    	//指明校验哪个表单,因为一个页面可以有多个表单
    	$("#myform").validate();
    	//alert(1);
    });
    </script>

     上面的例子的确能够快速的校验表单,但是提示信息不够精细,不能够准确的提示用户,因此还有如下方法

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
        
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
            <script type="text/javascript" src="js/util/jquery-1.4.4.js">
            </script>
            <script type="text/javascript" src="js/util/jquery.validate.min.js">
            </script>
            <title>
                Insert title here
            </title>
        </head>
        
        <body>
            <br>
            <!-- 表单校验功能 -->
            <form class="cmxform" id="signupForm" method="get" action="">
                <fieldset>
                    <legend>
                        字段校验、日历控件完整示例
                    </legend>
                    <table>
                        <tr>
                            <td>
                                <label for="username">
                                    Username
                                </label>
                            </td>
                            <td>
                                <input id="username" name="username" />
                            </td>
                            <!-- 这里设置的校验信息显示的地方在下一个td中,可以自行修改 -->
                            <td>
                            </td>
                        </tr>
                        <tr>
                            <td>
                                <label for="password">
                                    Password
                                </label>
                            </td>
                            <td>
                                <input id="password" name="password" type="password" />
                            </td>
                            <td>
                            </td>
                        </tr>
                        <tr>
                            <td>
                                <label for="confirm_password">
                                    Confirm password
                                </label>
                            </td>
                            <td>
                                <input id="confirm_password" name="confirm_password" type="password" />
                            </td>
                            <td>
                            </td>
                        </tr>
                        <tr>
                            <td>
                                <label for="sex">
                                    sex
                                </label>
                            </td>
                            <td>
                                    男<input id="sex1" name="sex" type="radio" />
                                   女 <input id="sex2" name="sex" type="radio" />
                            </td>
                            <td>
                            </td>
                        </tr>
                        <tr>
                            <td>
                                <label for="email">
                                    Email
                                </label>
                            </td>
                            <td>
                                <input id="email" name="email" />
                            </td>
                            <td>
                            </td>
                        </tr>
                        <tr>
                            <td>
                                <label for="upload">
                                    Upload
                                </label>
                            </td>
                            <td>
                                <input type="file" name="upload" />
                            </td>
                            <td>
                            </td>
                        </tr>
                        <tr>
                            <td>
                                <label for="language">
                                    language
                                </label>
                            </td>
                            <td>
                                <input type="checkbox" name="language" value="cn" />
                                汉语
                                <input type="checkbox" name="language" value="en" />
                                英语
                                <input type="checkbox" name="language" value="jp" />
                                日语
                                <input type="checkbox" name="language" value="ge" />
                                德语
                            </td>
                            <td>
                            </td>
                        </tr>
                        <tr>
                            <td>
                                <label for="book">
                                    book
                                </label>
                            </td>
                            <td>
                                <select name="book" multiple="multiple">
                                    <option value="en">
                                        英语书
                                    </option>
                                    <option value="cn">
                                        汉语书
                                    </option>
                                    <option value="jp">
                                        日语书
                                    </option>
                                    <option value="ge">
                                        德语书
                                    </option>
                                </select>
                            </td>
                            <td>
                            </td>
                        </tr>
                        <tr>
                            <td>
                                <label for="agree">
                                    同意该协议
                                </label>
                            </td>
                            <td>
                                <input type="checkbox" class="checkbox" id="agree" name="agree" />
                            </td>
                            <td>
                            </td>
                        </tr>
                        <tr>
                            <td>
                                <input class="submit" type="submit" value="Submit" />
                            </td>
                        </tr>
                    </table>
                </fieldset>
            </form>
        </body>
    
    </html>
    <script>
        $(document).ready(function() {
            //通过id查找要进行校验的表单
            $("#signupForm").validate({
                //设置校验触发的时机,默认全是true。不要尝试去设置它为true,可能会有js错误。
                //onsubmit:false,
                //onfocusout:false,
                //onkeyup:false,
                //onclick:false,
    
                //验证通过后执行的动作
                //success:function(label){
                //    label.text("ok!").addClass("success");
                //},
                //手动设置错误信息的显示方式
                errorPlacement: function(error, element) {
                    error.appendTo(element.parent().next());
                    //    if ( element.is(":radio") )
                    //        error.appendTo( element.siblings("span") );
                    //    else if ( element.is(":checkbox") ){
                    //        error.appendTo ( element.siblings("span") );
                    //    }
                    //        else
                    //        error.appendTo( element.parent() );
                },
                rules: {
                    username: {
                        required: true,
                        rangelength: [5, 7]
                    },
                    password: {
                        required: true,
                        minlength: 5
                    },
                    confirm_password: {
                        required: true,
                        minlength: 5,
                        equalTo: "#password"
                    },
                    sex: {
                        required: true
                    },
    
                    email: {
                        required: true,
                        email: true
                    },
                    language: {
                        required: true,
                        rangelength: [2, 3]
                    },
                    book: {
                        required: true,
                        rangelength: [2, 3]
                    },
                    agree: "required",
                    upload: {
                        required: true,
                        accept: "flv|jpg"
                    }
                },
                //校验提示信息
                messages: {
                    username: {
                        required: "请输入用户名",
                        rangelength: "用户名长度必须为{0}到{1}个字符或汉字"
                    },
                    password: {
                        required: "请输入密码",
                        minlength: "密码的最小长度是{0}个字符"
                    },
                    confirm_password: {
                        required: "请输入确认密码",
                        minlength: "确认密码的最小长度是{0}个字符",
                        equalTo: "确认密码与密码不相等"
                    },
                    email: "请输入正确的邮箱",
                    language: {
                        required: "该项必须填写",
                        rangelength: "请您选择{0}到{1}项语言"
                    },
                    book: {
                        required: "该项必须选择",
                        rangelength: "请您选择{0}到{1}本书"
                    },
                    agree: "您没有同意使用协议",
                    upload: {
                        required: "请输入上传文件的路径",
                        accept: "上传文件的格式只能是 flv或jpg"
                    }
                }
            });
        });
    </script>

    备注:

    1、rules对象里面的key是表单的“name”和“id”,这里我们要求name与id对应起来。

    2、message与rules对应起来,都是对应表单的名称

    3、rules中的required表示是验证内容不能为空,message中的required表示给出内容为空的提示

    来自http://www.ylzx8.cn/web/web/992633.html

  • 相关阅读:
    虽然非常简单但是效果不错
    Google地图开发总结
    笔记(一):ES6所改良的javascript“缺陷”
    ex6的选择器
    android中的style部分属性值介绍
    Android ImageSwitcher
    c# Winform退出程序的方法
    Android ImageView获取网络图片
    循环向数据库(sql server)插入10W条数据
    Android Handler+Thread实现更新Ui
  • 原文地址:https://www.cnblogs.com/liziqiang/p/3884284.html
Copyright © 2011-2022 走看看