zoukankan      html  css  js  c++  java
  • Nice Validator

    1. 应用需求

    在前端对form表单的输入进行验证。例如,对密码的复杂度进行验证;用户名的合法性验证;等等。

    2. 使用

    1、参照一些前端框架(例如:BJUI)
    2、参照官方文档,可以快速上手
    有时候需要,结合实际框架,对现有代码进行修改,才能满足使用需求,使用如下:

    官网介绍了提交表单三种方式触发验证:

    1. nice-validator 一旦初始化就会阻止表单被提交,直到表单规则全部验证通过。
    2. 如果传递了valid参数回调或者valid.form事件,表单即使验证通过也不会被提交,而是由valid参数和valid.form事件接管。然后你需要自己决定如何提交表单。

    方式一:点击提交按钮,表单验证通过后自动原生方式提交

    <form id="form1" action="register.php">
        <label>Email</label>
        <input type="email" name="email" data-rule="required;email">
        <label>Password</label>
        <input type="password" name="pwd" data-rule="required;length(6~16)">
        <button type="submit">提交</button>
    </form>
    

    方式二:使用验证通过回调(参考:valid)

        // dom
        <form id="form1" action="register.php">
            <label>Email</label>
            <input type="email" name="email">
            <label>Password</label>
            <input type="password" name="pwd">
        </form>
        // 初始化验证
        $('#form1').validator({
            fields: {
                'email': 'required;email',
                'pwd': 'required;length(6~16)'
            }
        });
    

    示例三:绑定表单验证通过的事件(参考:valid.form事件)

    $('#form1').on('valid.form', function(e){
        // You can do something, then submit form by native
        // this.submit();
        // or use ajax submit
        $.post("path/to/server", $(this).serialize())
            .done(function(d){
                // some code
            });
    });
    

    实际应用的时候,可能通过点击事件触发表单提交$.post(),结合示例二。

    <button id='form-xxxx' style="display:inline" type="button" class="btn-green" data-icon="search" onclick="SubmitForm('xxxx')">{{i18nDashBoard "DashBoard" "Submit"}}</button> 
    function SubmitForm(id){
       //其他操作
        $('#form-'+id).isValid(function(){
          //提交表单操作
          })
        //其他操作
    }
    
    

    3. 规则

    自定义规则

    对密码复杂度进行校验,这里其实还可以做关联表单的校验。

        var options={
          rules:{
            pwdCheck:function(element){
            var tips=  "提示信息"; 
            var reg = new RegExp("^(?![A-Za-z]+$)(?![A-Z\d]+$)(?![A-Z\W]+$)(?![a-z\d]+$)(?![a-z\W]+$)(?![\d\W]+$)^[a-zA-Z0-9!#*_]{8,20}$");
            if(reg.test(element.value)){
               return true; 
              }         
            // if(typeof element.form.elements["xxx"]== "undefined"){
            //   return true
            // }  
            return tips;
            }
          },
          fields:{
            Password: {
              rule:"pwdCheck",
              must:true //必须每次都要校验,有时候会不校验:是否强制验证该字段
            }
          }  
        }
    

    说明:如果在这个校验逻辑函数里面,需要依赖其他字段,那样就会进行如下调用:

        element.form.elements[xxx].value=123;
    
    • element : HTMLInputElement
    • element.form :HTMLFormElement
    • element.form.elements :HTMLFormControlsCollection

    内置规则

    • required
    • checked

    相关资料

  • 相关阅读:
    数据类型对照表
    MySql
    操作MongoDB
    Linux常用命令
    MongoDB性能参数
    有关Remoting的几个结论与论证
    异步获取远程文件
    Bigtable:一个分布式的结构化数据存储系统(转)
    windbg命令
    C#下几种排序算法
  • 原文地址:https://www.cnblogs.com/meiguhuaxian/p/14140833.html
Copyright © 2011-2022 走看看