zoukankan      html  css  js  c++  java
  • Validate表单验证插件

    1. validate基本介绍
    2. metadata的加入
    3. 行为与结构分离以及自定义验证信息
    4. 自定义验证规则
    5. 常用方法及注意问题

    其中,第1跟第2都是jQuery.Validate的内置的消息,以样式名的方式进行验证虽然简单快捷。但臃肿了input标签,不利于日后修改。

    第3使用单独的js脚本解决了HTML和验证规则的分离,好处是统一验证规范,方便日后维护

    jQuery Validation插件的下载地址:http://jqueryvalidation.org/

    一、validate基本介绍

    Validation拥有如下特点:

    1、内置验证规则:拥有必填、数字、E-Mail、URL和信用卡号码等19类内置验证规则。

    2、自定义验证规则:可以很方便地自定义验证规则。

    3、简单强大得验证信息提示:默认了验证信息提示,并提供自定义覆盖默认提示信息的功能。

    4、实时验证:可以通过keyup或blur事件触发验证,而不仅仅在表单提交的时候验证。

    默认校验规则

    序号规则描述
    1 required:true 必须输入的字段。
    2 remote:"check.php" 使用 ajax 方法调用 check.php 验证输入值。
    3 email:true 必须输入正确格式的电子邮件。
    4 url:true 必须输入正确格式的网址。
    5 date:true 必须输入正确格式的日期。日期校验 ie6 出错,慎用。
    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}.")
    },

    使用:

    <script src="js/jquery-1.9.1.min.js"></script>
    <script src="js/jquery.validate-1.13.1.min.js"></script>
    $("#myForm").validate();  //form的id
    
    <form id="myForm" method="post" action="#">
            <fieldset>
                <legend>表单验证</legend>
                <p>
                    <label for="username">用户名</label>
                    <!--<input id="username" name="username" type="text" class="required" minlength="3">-->
                    <!--required或者使用-->
                    <input id="username" name="username" type="text" minlength="3" required>
                </p>
                <p>
                    <label for="email">电子邮件</label>
                    <input id="email" name="email" type="text" class="required email">
                </p>
                <p>
                    <label for="url">网址</label>
                    <input id="url" name="url" type="text" class="url">
                </p>
                <p>
                    <label for="comment">评论</label>
                    <textarea id="comment" name="comment" cols="20" rows="3" class="required"></textarea>
                </p>
                <p>
                    <input type="submit" value="提交">
                </p>
            </fieldset>
        </form>
    View Code

    默认信息改中文:

    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} 的值")
    });

    推荐将文件放入messages_cn.js中,在文件中引用

    <script src="js/messages_cn.js"></script>

    二、metadata的加入

     jquery.metadata.js是一个支持固定格式解析的jquery插件,Validation插件将其很好地融合到验证规则编码中。

    注意:低版本的validate没有内置metadata的支持,so,这种方法不推荐使用

    使用:

    <script src="js/jquery-1.9.1.min.js"></script>
    <script src="js/jquery.validate.js"></script>
    <script src="js/jquery.metadata.js"></script>
    $("#myForm").validate({meta:"validate"})
    <form id="myForm" method="post" action="#">
            <fieldset>
                <legend>表单验证</legend>
                <p>
                    <label for="username">用户名</label>
                    <input id="username" name="username" type="text" class="{validate:{required:true,minlength:2}}">
                </p>
                <p>
                    <label for="email">电子邮件</label>
                    <input id="email" name="email" type="text" class="{validate:{required:true,email:true}}">
                </p>
                <p>
                    <label for="url">网址</label>
                    <input id="url" name="url" type="text" class="{validate:{url:true}}">
                </p>
                <p>
                    <label for="comment">评论</label>
                    <textarea id="comment" name="comment" cols="20" rows="3" class="{validate:{required:true}}"></textarea>
                </p>
                <p>
                    <input type="submit" value="提交">
                </p>
            </fieldset>
        </form>

    三、行为与结构分离以及自定义验证信息

     在validate()方法中增加rules属性,通过每个字段的name属性值来匹配验证规则。

    $(function () {
            $("#myForm").validate({
                rules:{
                    username:{
                        required:true,
                        minlength:3
                    },
                    email:{
                        required:true,
                        email:true
                    },
                    url:"url",
                    comment:"required"
                },
                messages:{
                    username:{
                        required:"请输入姓名",
                        minlength:"请至少输入两个字符"
                    },
                    email:{
                        required:"请输入电子邮件",
                        email:"请检查电子邮件的格式"
                    },
                    url:{
                        url:"请检查网址的格式"
                    },
                    comment:{
                        required:"请输入您的评论"
                    }
                },
    //            errorElement:"em",  默认为span标签不推荐更改
                success:function(element){
                    $(element).html("&nbsp;").addClass("valid");
    //                注意,此class不能为success。
                }
            });
        });
    View Code
    label.error{ background: url(images/unchecked.png) no-repeat 0px 0px; padding-left: 16px;}
    label.valid{ background: url(images/checked.png) no-repeat 0px 0px; padding-left: 16px;}

    四、自定义验证规则

    <p>
      <label for="valcode">验证码</label>
      <input id="valcode" name="valcode" type="text">=7+9
    </p>
    $(function () {
            $("#myForm").validate({
                rules:{
                    valcode:{
                        formula:"7+9"
                    }
                }
            });
    //        自定义一个验证方法
            $.validator.addMethod(
                    "formula",function(value,element,param){
                        return value==eval(param);
                    },
                    '请输入数学公式计算后的结果'
            )
        });
    View Code

    正则表达:

    。。。。。。

    五、常用方法及注意问题

     1、替代默认的submit

    //            代替默认的submit
    //            submitHandler:function(form){
    //                alert("submitted");
    //                form.submit();
    //            }
    //            使用ajax方式
                submitHandler: function (form) {
                    $(form).ajaxSubmit({
                        type: "post",
                        success: function (element) {
                            alert(element + "执行成功");
                        },
                        error: function (XmlHttpRequest, textStatus, errorThrown) {
                            alert(errorThrown + "添加失败");
                        }
    
                    });
                }

    2、只验证不提交

    $("#myForm").validate({
        debug: true
    });

    3、全局设置默认值

    //        设置所有表单只验证不提交
            $.validator.setDefaults({
                debug:true
            });
    //        设置所有表单提交方式
            $.validator.setDefaults({
                submitHandler:function(form) {
                    alert("submitted!");
                    form.submit();
                }
            });
  • 相关阅读:
    NOIP2020 退役记
    CSP2020 游记
    Owenのgalgame 颓废合集
    Atcoder Grand Contest 选做
    xlrd》操作excel 出现的问题:File "D:python37libsite-packagesxlrdformula.py", line 1150, in evaluate_name_formula assert len(tgtobj.stack) == 1
    数据库文档生成代码
    vue 父类组件如何引入子组件
    jna设置回调函数接收c++数组
    在一个vue文件调用另外一个vue文件中的方法
    idea 执行sprinboot 报错 commend line is too long
  • 原文地址:https://www.cnblogs.com/zhaojieln/p/4267706.html
Copyright © 2011-2022 走看看