博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
设计模式--使用策略模式进行表单验证(微信小程序)
阅读量:5082 次
发布时间:2019-06-13

本文共 1613 字,大约阅读时间需要 5 分钟。

## 使用策略模式进行表单效验

### 实习做微信小程序项目的时候曾经做过表单验证,多个页面共用一套校验规则,当时能力不够,不会封装。最近看了设计模式,就写了这个。

### 第一步:封装策略对象

var strategys = {  'isNotEmpty': function (value, errorMsg) {    if (value == '') return errorMsg;  },  'minLength': function (value, len, errorMsg) {    if (value.length < len) return errorMsg;  },  'mobileFormat': function (value, errorMsg) {    if (!/(^1[3|5|8][0-9]{9}$)/.test(value)) return errorMsg;  }}

 

### 第二步:声明验证函数Validator

var Validator = function () {  this.cache = [];}

 

### 第三步:给Validator函数添加add和start方法。

Validator.prototype.add = function (value, rule, errorMsg) {  //只有一个校验规则的时候  var str = rule.split(':');//把minLength:6分割  this.cache.push(function () {    var strategy = str.shift();//删掉数组第一个元素,并返回被删除的元素    str.unshift(value);//添加元素至数组第一位    str.push(errorMsg);    return strategys[strategy].apply(null, str)//把不定参传进校验函数  })}Validator.prototype.start = function () {  var validatorFunc = this.cache;  var result = [];  for (var i = 0; i < validatorFunc.length; i++) {    var msg = validatorFunc[i]();//执行校验函数    if (msg) result[i] = msg;  }  return result;}

### 第四步:添加数据到校验规则,开始校验。

var validator = new util.Validator(); // 创建一个Validator对象/* 添加一些效验规则 */validator.add(this.data.username, 'isNotEmpty', '用户名不能为空');validator.add(this.data.password, 'minLength:6', '密码长度不能小于6位');validator.add(this.data.telephone, 'mobileFormat', '手机号码格式不正确');var errorMsg = validator.start(); // 获得效验结果this.setData({ errorMsg: errorMsg})if(errorMsg.length == 0)console.log("验证通过,ajax提交数据")

#### 参考链接:https://www.cnblogs.com/tugenhua0707/p/5198407.html#_labe7

GitHub地址:

转载于:https://www.cnblogs.com/weihuan/p/9535417.html

你可能感兴趣的文章
青蛙学Linux—sudo和它的配置文件
查看>>
使用Python读取和写入mp3文件的id3v1信息
查看>>
内存空间切换:在内核写数据到用户空间的方法
查看>>
【POJ3233】Matrix Power Series
查看>>
音视频基础知识(一)
查看>>
BZOJ2982: combination Lucas
查看>>
OpenCV下的图片旋转(转)
查看>>
WPF 一个弧形手势提示动画
查看>>
随手练——回文串专题
查看>>
线段树详解 (原理,实现与应用)
查看>>
Ubuntu 登陆异常-输入正确的密码后还会返回到登陆界面的问题
查看>>
JQ轮播小demo
查看>>
【原创】大叔问题定位分享(20)hdfs文件create写入正常,append写入报错
查看>>
2016 西班牙 国家德比(西甲31轮)
查看>>
CArichive每次读写一行
查看>>
让QT支持中文的方法
查看>>
dos批处理知识
查看>>
多文档界面的实现(DotNetBar的superTabControl)
查看>>
3.字符串
查看>>
关于深复制与浅复制
查看>>