zoukankan      html  css  js  c++  java
  • 知问前端——验证插件(二)

       validate()的方法和选项

       除了默认的验证规则外,jquery.validate.js还提供了大量的其他属性和方法供开发者使用,比如调试属性,错误提示位置一系列比较有用的选项。

       index.html:

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="UTF-8">
        <title>知问前端</title>
        <script type="text/javascript" src="jquery-1.12.3.js"></script>
        <script type="text/javascript" src="jquery-ui.js"></script>
        <script type="text/javascript" src="jquery.validate.js"></script>
        <script type="text/javascript" src="index.js"></script>
        <link rel="shortcut icon" type="image/x-icon" href="img/favicon.ico" />
        <link rel="stylesheet" type="text/css" href="jquery-ui.css" />
        <link rel="stylesheet" type="text/css" href="style.css" />
    </head>
    <body>
        <form id="reg" action="123.html">
            <p class="myerror"></p>
            <p>账号:<input type="text" name="user" /></p>
            <p>密码:<input type="text" name="pass" id="pass" /></p>
            <p><input type="submit" value="提交" /></p>
        </form>
    </body>
    </html>

       jQuery代码:

    $(function() {
        $("#reg").validate({
            rules:{
                user:{
                    required:true,
                    minlength:2,
                    //rangelength:[5,10]
                },
                pass:{
                    required:true,
                    minlength:6
                }
            },
            messages:{
                user:{
                    required:"账号不得为空!",
                    minlength:"账号不得小于{0}位!",
                    //minlength:jQuery.format("账号不得小于{0}位!")  //加了之后反而丧失作用
                    //minlength:$.format("账号不得小于{0}位!") //同上
                    //rangelength:"帐号限制在{0}-{1}位!"
                },
                pass:{
                    required:"密码不得为空!",
                    minlength:"密码不得小于{0}位!"
                }
            }
        });
    });

       开启调试模式禁止提交:

    $('#reg').validate({
        debug : true
    });

       设置调试模式为默认,可以禁止多个表单提交:

    //设置调试模式为默认,可以禁止多个表单提交,
    //所有默认行为都可以在这里设置
    $.validator.setDefaults({
        debug:true
    });

       使用其他方式代替默认提交:

    $(function() {
        $("#reg").validate({
         //使用其他方式代替默认提交
            submitHandler:function(form) {
                //可以执行ajax提交,并且无须debug:true阻止提交了
                //alert(form); // [object HTMLFormElement]
                
                //当验证成功后执行,而且阻止了默认提交
                //一般用于ajax提交使用
                
                //$(".myerror").hide();
    
                alert("验证成功,准备提交!");
            }
        });
    });

       忽略某个字段验证:

    $('#reg').validate({
        ignore:"#pass"
    });

       群组错误提示:

    $('#reg').validate({
        groups:{
          myerror:"user pass"
        }
    });

       显示群组的错误提示:

    $('#reg').validate({
        focusInvalid:false, //使得第一次表单提交之后,焦点不在第一个input控件上
        //error是user、pass两个错误对象,element是<input>控件的DOM对象
        errorPlacement:function(error,element) {
        //alert(element[0]); //[object HTMLInputElement]
        //alert(error); //[object Object]
          $.each(error, function(index,value) {
              //alert(index + " " + value); //0 [object HTMLLabelElement]
              //alert(index + " " + $(value).html());
              $(".myerror").html($(".myerror").html() + $(value).html());
          });
        }
    });

       群组错误提示,分开:

    $('#reg').validate({
        groups:{
          error_user:"user",
          error_pass:"pass"
        }
    });

       将群组的错误指定存放位置:

    $('#reg').validate({
        errorPlacement:function(error,element) {
          error.appendTo(".myerror");
        }
    });

       设置错误提示的class名以及设置错误提示的标签:

    $('#reg').validate({
        errorPlacement:function(error,element) {
          error.appendTo(".myerror");
        },
        //设置错误提示的class名
        errorClass:"abc", //默认为error
        //设置错误提示的标签
        errorElement:"p", //默认是<label>标签包裹
    });

       将index.html的<p class="myerror"></p>修改为:<ol class="myerror"></ol>

    $('#reg').validate({
        errorPlacement:function(error,element) {
          error.appendTo(".myerror");
        },
        //统一包裹错误提示
        errorLabelContainer:"ol.myerror",
        wrapper:"li"
    });

       设置成功后加载的class以及使用方法加载class并添加文本:

       style.css:

    .valid {
        background: url(img/reg_succ.png) no-repeat right;
    }
    .abc {
        border: 5px solid green;
    }

       jQuery代码如下:

    $('#reg').validate({
        //加载成功后,<input>控件后的<label>控件加载class
        success:"abc", //成功后加载(即输入正确后),<input>控件的class默认为valid
        //使用方法加载class并添加文本
        success:function(label) {
        label.addClass("abc").text("ok");
        }
    });

       高亮显示有错误的元素,变色式:

    $('#reg').validate({
        //高亮显示有错误的元素,变色式
        highlight:function(element, errorClass) {
          $(element).css("border","1px solid red");
        },
        //恢复默认
        unhighlight:function(element, errorClass) {
          $(element).css("border","1px solid #ccc");
        }
    });

       表单提交时获取信息:

    $("#reg").validate({
        //使用其他方式代替默认提交
        submitHandler:function(form) {
            //可以执行ajax提交,并且无须debug:true阻止提交了
            //alert(form); // [object HTMLFormElement]
            
            //验证成功后执行,而且阻止了默认提交
            //一般用于ajax提交使用
    
            $(".myerror").hide();
    
            alert("验证成功,准备提交!");
        },
        //有错误的时候才执行,一旦没有错误就不会执行了
        invalidHandler:function(event, validator) {
            //alert(validator.numberOfInvalids()); //2条错误信息
            
            var error = validator.numberOfInvalids();
            if(error) {
                $(".myerror").html("您有"+error+"条错误信息!");
            }
            //if(error == 0) $(".myerror").hide(); //错误,不能这样来判断    
        }
    });

       获取错误提示句柄,不用提交及时获取值,达到的效果同上:

    $("#reg").validate({
        //使用其他方式代替默认提交
        submitHandler:function(form) {
            //可以执行ajax提交,并且无须debug:true阻止提交了
            //alert(form); // [object HTMLFormElement]
            
            //当验证成功后执行,而且阻止了默认提交
            //一般用于ajax提交使用
            alert("验证成功,准备提交!");
        },
        showErrors:function(errorMap, errorList) {
            //alert("123");
            //alert(errorMap); //[object Object]
            //$.each(errorMap, function(index, value) {
                //alert(index + " " + value); //user 账号不得为空!
            //});
            //alert(errorMap.user);
            //alert(errorList[0].element); //[object HTMLInputElement],当前错误的表单元素
            //alert(errorList[0].message); //当前错误的表单元素
            var error = this.numberOfInvalids();
            //alert(error);
            if(error) {
                $(".myerror").html("您有"+error+"条错误信息!");
            } else {
                $(".myerror").hide();
            }
            this.defaultShowErrors(); //执行默认错误
        },
    });

      

      

  • 相关阅读:
    (转) c++ 迭代器
    (转) 学习C++ -> 向量(vector)
    latex 模版
    javascript继承篇
    ES6的Map和Set的使用,以及weakMap的一点理解
    JavaScript中的eval函数
    Node.js中的进程与线程
    普通函数与箭头函数的区别是什么?
    git 远程拉去代码 输入用户名密码
    npm 设置镜像
  • 原文地址:https://www.cnblogs.com/yerenyuan/p/5455706.html
Copyright © 2011-2022 走看看