当前位置: 首页 > news >正文

设计模式编写表单验证

/**
* Created by kyn on 19/1/10.
*/
var KYN_VALIDATION = (function (win) {
 var Validation = function () {
/**
* 设计一个symbol判断弹窗是否设置
*/
  var _isAlert = false,
/**
* 自带弹窗 默认alert
*/
  _alert = function (_msg) {
    if (_isAlert) {
      _alertMsg(_msg)
    } else {
      alert(_msg)
    }
  },
/**
* 外部存写入方法 储存区
*/
  _outRule = [],
/**
* 内部的验证方法库
*/
  _rule = {
    maxLength: function (_obj) {
      var _ruleLength = _obj['length'] ? _obj['length'] : 6;
      if (_obj['val'] * 1 > _ruleLength * 1) {
        _alert(_obj['errMsg']);
        return false;
      }else {
        return true;
      }
   },
   minLength: function (_obj) {
     var _ruleLength = _obj['length'] ? _obj['length'] : 1;
     if (_obj['val'] * 1 < _ruleLength * 1) {
       _alert(_obj['errMsg']);
         return false;
       }else{
         return true;
         }
    },
    isWriting: function (_obj) {
      if (_obj['val'] == 0) {
        _alert(_obj['errMsg']);
        return false;
      }else{
        return true;
      }
    }

  };

/**
* 预留外部弹窗方法
*/
  function _alertMsg() {

  }

  /**
    * 写入自定义弹窗方法
         */
  function _setAlertFunction(_fun) {
    if ( _fun && typeof _fun == 'function'){
    /**
    * 改写外部弹窗方法 并且关闭开关
    */
      _isAlert = true;

      _alertMsg = function (_msg) {
        return _fun(_msg);
      };

    }


  }

/**
* 外部添加验证方案
* @param _obj
*/
  function _addTestRule(_obj) {
    _outRule.push(_obj);
    return this;
  }

  function _checkRule() {
    for (var i = 0, _length = _outRule.length; i < _length; i++) {
       /**
        * 对每个方法进行循环进行,当发生问题的时候清空 外部导入方法
                     */
        if (!_rule[_outRule[i]['name']].call(this,_outRule[i])) {
      /**
       * 清空储存过的需要校验的规则
                      */
         _outRule = [];
            return false;
      }
    }
  }
// 暴露公用方法 外部调用
  return {
    setAlertFunction: _setAlertFunction,
    addTestRule: _addTestRule,
    checkRule: _checkRule
  }
 };
  return Validation;
})(window);

 

转载于:https://www.cnblogs.com/xyyyy/p/10252483.html

相关文章:

  • spark hive python依赖第三方包
  • Asp 输出编码为UTF-8格式的XML内容的注意事项
  • [Leetcode] Permutations II
  • Acticles about Interface!
  • 【Camera专题】你应该熟悉的Camera驱动框架一(Hal层-kernel层)
  • HanLP分词命名实体提取详解
  • 染陌足迹——SeeConf2019
  • MyBatis-Plus 代码生成器
  • 归并排序(python)
  • C++学习札记(2011-10-06)
  • 蔚来汽车秦力洪:智能化与电动化天生融合,6大核心技术自主研发 | 电动汽车百人会 2019...
  • 杭电2090
  • Arcgis Runtime 100.3开发实例源代码调试日志
  • 上厅房,下厨房,ElasticSearch有的忙
  • Linux安装gitlab
  • 0x05 Python数据分析,Anaconda八斩刀
  • 2017 前端面试准备 - 收藏集 - 掘金
  • hadoop入门学习教程--DKHadoop完整安装步骤
  • Iterator 和 for...of 循环
  • Java方法详解
  • k8s如何管理Pod
  • Laravel核心解读--Facades
  • Leetcode 27 Remove Element
  • React-Native - 收藏集 - 掘金
  • Vue 2.3、2.4 知识点小结
  • webpack入门学习手记(二)
  • 创建一种深思熟虑的文化
  • 反思总结然后整装待发
  • 警报:线上事故之CountDownLatch的威力
  • 理解IaaS, PaaS, SaaS等云模型 (Cloud Models)
  • 前端攻城师
  • 前端学习笔记之观察者模式
  • 一些基于React、Vue、Node.js、MongoDB技术栈的实践项目
  • 移动端 h5开发相关内容总结(三)
  • 专访Pony.ai 楼天城:自动驾驶已经走过了“从0到1”,“规模”是行业的分水岭| 自动驾驶这十年 ...
  • ​云纳万物 · 数皆有言|2021 七牛云战略发布会启幕,邀您赴约
  • #{} 和 ${}区别
  • #define MODIFY_REG(REG, CLEARMASK, SETMASK)
  • #Linux(make工具和makefile文件以及makefile语法)
  • (八)Spring源码解析:Spring MVC
  • (附源码)springboot 房产中介系统 毕业设计 312341
  • (附源码)ssm户外用品商城 毕业设计 112346
  • (九十四)函数和二维数组
  • ****** 二 ******、软设笔记【数据结构】-KMP算法、树、二叉树
  • .Net Remoting常用部署结构
  • .NET 依赖注入和配置系统
  • .net 逐行读取大文本文件_如何使用 Java 灵活读取 Excel 内容 ?
  • .NET/C# 避免调试器不小心提前计算本应延迟计算的值
  • .vollhavhelp-V-XXXXXXXX勒索病毒的最新威胁:如何恢复您的数据?
  • @RestControllerAdvice异常统一处理类失效原因
  • [2016.7 test.5] T1
  • [2019/05/17]解决springboot测试List接口时JSON传参异常
  • [AutoSAR系列] 1.3 AutoSar 架构
  • [BZOJ5250][九省联考2018]秘密袭击(DP)
  • [C#] 基于 yield 语句的迭代器逻辑懒执行