JavaScript 策略模式封装表单验证库
来源:互联网 发布:淘宝摄影棚器材清单 编辑:程序博客网 时间:2024/06/08 07:31
直接上代码:
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title></head><body> <form id="form"> <p>用户名:<input type="text" name="userName" /></p> <p>密码:<input type="password" name="userWord"/></p> <p>手机:<input type="tel" name="userPhone"/></p> <p><input type="submit" value="提交"></p> </form></body><script> var form = document.getElementById('form'); //定义验证算法类 var autoForm = { isNonEmpt : function(val,msg){ if(val == ''){ return msg; } }, minLength : function (val,length,msg) { if(val.length<length){ return msg; } }, isPhone : function (val,msg) { if(!/(^1[0-9]{10}$)/.test( val )){ return msg; } }
//这里可以封装无数个验证算法
}; var Validator = function(){ this.cache = []; //保存检验规则 }; Validator.prototype.add = function(dom,rule){ var self = this; for(var i=0,rule;rule = rule[i++];){ (function(rule){ var strateguAry = rule.strategy.split(':'),//将带有值的参数分开 errorMsg = rule.errorMsg; self.cache.push(function(){ var strategy = strateguAry.shift();//获取验证算法的名称 strateguAry.unshift(dom.value);//获取将要验证的文本 strateguAry.push(errorMsg); return autoForm[strategy].apply(dom,strateguAry);//借用autoForm的方法进行验证 }) })(rule) } }; Validator.prototype.start = function(){ for(var i=0,fun;fun = this.cache[i++];){ var msg = fun(); if(msg){ return msg; } } } //定义执行算法类,并返回验证结果 var validate = function(){ var validator = new Validator(); validator.add(form.userName,[{ strategy:'isNonEmpt', errorMsg:'用户名不能为空!' },{ strategy:'minLength:2', errorMsg:'用户名最少两个字符!' }]); validator.add(form.userWord,[{ strategy:'isNonEmpt', errorMsg:'密码不能为空!' },{ strategy:'minLength:6', errorMsg:'密码最少6个字符!' } ]); validator.add(form.userPhone,[{ strategy:'isNonEmpt', errorMsg:'手机号码不能为空!' },{ strategy:'minLength:6', errorMsg:'手机号码格式不正确!' } ]); var errorMsg = validator.start(); return errorMsg; }; //表单提交 form.onsubmit = function(){ var errorMsg = validate(); if(errorMsg){ alert(errorMsg); return false; }else{ alert('提交成功!') }; }</script></html>
阅读全文
0 0
- JavaScript 策略模式封装表单验证库
- 策略模式表单验证
- 利用策略模式与装饰模式扩展JavaScript表单验证功能
- 利用策略模式与装饰模式扩展JavaScript表单验证功能
- 策略模式在表单验证中的应用
- HTML表单javascript验证通用模式
- HTML表单javascript验证通用模式
- HTML表单javascript验证通用模式
- 表单验证封装类
- 表单验证js封装
- javascript设计模式实践之策略模式--输入验证
- 优雅的表单验证模式--策略设计模式和ES6的Proxy代理模式
- JavaScript 表单及表单验证
- Html表单javascript 验证通用模式(收藏)
- JS封装常用表单验证
- JS表单验证封装类
- Java表单验证封装类
- Java表单验证封装类
- C语言 static关键字详解
- linux系统自定义分辨率
- Lintcode:矩阵面积
- Centos上解压文件是出现:Not found in archive
- oracle查询排序asc/desc 多列 order by
- JavaScript 策略模式封装表单验证库
- ObjectBox[十] 自定义类型
- Deployment Assembly JAR
- 闭包
- 【学习C++】堆和栈的区别
- python实现归并排序
- Centos搭建ceph+++五、创建ceph集群
- 用例图笔记
- 马云在2017乌镇互联网大会讲了这三个观点