JQuery.Validate学习笔记

JQuery Validate 插件为表单提供了强大的验证功能,让客户端表单验证变得更简单,同时提供了大量的定制选项,满足应用程序各种需求。该插件捆绑了一套有用的验证方法,包括 URL 和电子邮件验证,同时提供了一个用来编写用户自定义方法的 API。

使用JQuery Validate之前首先引入以下两个文件:jquery-1.11.1.js jquery.validate.js。下载链接:https://jqueryvalidation.org。

菜鸟教程提供的 1.14.0 版本下载地址:http://static.runoob.com/download/jquery-validation-1.14.0.zip

直接上实例,html代码如下:

 <div id="form_con">
         
        <form class="cmxform" id="myform" method="post" action="">

            <table cellspacing="0" cellpadding="0">

                <tbody>

                    <tr>

                        <td>用户名</td>

                        <td><input type="text" id="username" name="username" class="required" /></td>

                        <td></td>

                    </tr>

                    <tr>

                        <td>密码</td>

                        <td><input id="password" type="password" name="firstpwd" /></td>

                        <td></td>

                    </tr>

                    <tr>

                        <td>验证密码</td>

                        <td><input type="password" name="secondpwd" /></td>

                        <td></td>

                    </tr>

                    <tr>

                        <td>性别</td>

                        <td><input id="sex" type="radio" name="sex" /><input type="radio" name="sex" /></td>

                        <td></td>

                    </tr>

                    <tr>

                        <td>年龄</td>

                        <td><input type="text" name="age" /></td>

                        <td></td>

                    </tr>

                    <tr>

                        <td>邮箱</td>

                        <td><input type="text" name="email" /></td>

                        <td></td>

                    </tr>
                    
                    <tr>

                        <td>时间</td>

                        <td><input type="date" name="time" /></td>

                        <td></td>

                    </tr>

                    <tr>

                        <td>个人网页</td>

                        <td><input type="text" name="purl" /></td>

                        <td></td>

                    </tr>

                    <tr>

                        <td>电话</td>

                        <td><input type="text" name="telephone" /></td>

                        <td></td>

                    </tr>

                    <tr>

                        <td>附件</td>

                        <td><input type="file" name="afile"/></td>

                        <td></td>

                    </tr>

                    <tr><td colspan="3" ><input type="submit" name="submit" value="提交" /><button>重置</button></td></tr>

                </tbody>          

            </table>

        </form>

  </div>  

新建一个validated.js文件用于验证以上表单数据:

$(function(){
     var validator = $("#myform").validate({

        debug: true,       //调试模式取消submit的默认提交功能

        errorClass: "haha", //默认为错误的样式类为:error

        focusInvalid: false, 
        
        focusCleanup: true,

        onkeyup: false,
        
        errorElement: "span",  

        submitHandler: function(form) {   //表单提交句柄,为一回调函数,带一个参数:form

            alert("提交表单");

            form.submit(function()
            {
                return false;
            });   //提交表单

        },

        rules: {           //定义验证规则,其中属性名为表单的name属性

            username: {

                required: true,

                minlength: 2,
                
                   remote: {
                    url: "js/test.txt",     //后台处理程序
                    type: "get",               //数据发送方式
                    //dataType: "text",           //接受数据格式   
                    data: {                     //要传递的数据
                        username: function() {
                            return $("#username").val();
                         }
                    }
                }
                //response.getwrite().write("true")

            },

            firstpwd: {

                required: true,

                //minlength: 6

                rangelength: [6, 8]

            },

            secondpwd: {

                required: true,

                equalTo: "#password"

            },

            sex: {

                required: true

            },

            age: {

                required: true,

                range: [0, 120]

            },

            email: {

                required: true,

                email: true

            },
            
            telephone:{
                
                required:true,
                
                isTelephone:true
                
            },

            purl: {

                required: true,

                url: true

            },

            afile: {

                required: true,

                accept: "xls,doc,rar,zip"

            }

        },

        messages: {       //自定义验证消息

            username: {

                required: "用户名是必需的!",

                minlength: $.validator.format("用户名至少要{0}个字符!"),

                remote: $.validator.format("{0}已经被占用")
               

            },

            firstpwd: {

                required: "密码是必需的!",

                rangelength:  $.validator.format("密码要在{0}-{1}个字符之间!")

            },

            secondpwd: {

                required: "密码验证是必需的!",

                equalTo: "密码验证需要与密码一致"

            },

            sex: {

                required: "性别是必需的"

            },

            age: {

                required: "年龄是必需的",

                range: "年龄必须介于{0}-{1}之间"

            },

            email: {

                required: "邮箱是必需的!",

                email: "请输入正确的邮箱地址(例如 myemail@163.com)"

            },
            
            telephone:{
                
                required: "手机号码是必需的!"
                
            },
         

            purl: {

                required: "个人主页是必需的",

                url: "请输入正确的url格式,如 http://www.domainname.com"

            },

            afile: {

                required: "附件是必需的!",

                accept: "只接收xls,doc,rar,zip文件"

            }

        },

        errorPlacement: function(error, element) {  //验证消息放置的地方

            error.appendTo(element.parent("td").next("td"));

        },

        highlight: function(element, errorClass) {  //针对验证的表单设置高亮

            $(element).addClass(errorClass);

        },

        success: function(label) {

            label.addClass("valid").text("Ok!")

        }

 

        /*,

        errorContainer: "#error_con",               //验证消息集中放置的容器

        errorLabelContainer: "#error_con ul",       //存放消息无序列表的容器

        wrapper: "li",                              //将验证消息用无序列表包围

        validClass: "valid",                        //通过验证的样式类

        errorElement: "span",                         //验证标签的名称,默认为:label

        success: "valid"                            //验证通过的样式类

        */

    });

    // 手机号码验证   
    jQuery.validator.addMethod("isTelephone", function(value, element) {   
        var tel = /^1[358][0-9]{9}$/;
        return tel.test(value);
    }, "请正确填写您的手机号码");
    
    $("button").click(function() {

        validator.resetForm();

    });


});

注意:

  1.username属性是通过远程验证的,通过remote连接后台程序进行验证。代码如下:

remote: {
                    url: "js/test.txt",     //后台处理程序
                    type: "get",               //数据发送方式
                    //dataType: "text",           //接受数据格式   
                    data: {                     //要传递的数据
                        username: function() {
                            return $("#username").val();
                         }
                    }

 2.telephone元素的验证是自定义添加的方法,代码如下:

 // 手机号码验证   
    jQuery.validator.addMethod("isTelephone", function(value, element) {   
        var tel = /^1[358][0-9]{9}$/;
        return tel.test(value);
    }, "请正确填写您的手机号码");

 

addmethod里面有三个参数:name   function   message。 方法名称 调用方法  提示信息。

3.设置提示信息的地方:

 errorPlacement: function(error, element) {  //验证消息放置的地方

            error.appendTo(element.parent("td").next("td"));

        },

 可将常用的验证方法收集好,写成一个js文件,一般写在 additional-methods.js 文件中,方便以后自己代码调用。未完待续。。。

 

posted @ 2017-09-24 23:05  Sagacity_shen  阅读(159)  评论(0编辑  收藏  举报