validator验证控件使用代码


Posted in Javascript onNovember 23, 2010

下面是js代码(在绑定对象的时候感觉很不优雅,希望高人能指点一二啊!)

function validator(obj,option){//验证对象 
var self = this; 
if(!(self instanceof validator)) 
return new validator(obj,option); 
self.source={'mobile':'^(13|14|15|18)[0-9]{9}$','postcode':'^\\d{6}$','integer':'^-?\\d*$','email':'^\\w+((-\\w+)|(\\.\\w+))*\\@[A-Za-z0-9]+((\\.|-)[A-Za-z0-9]+)*\\.[A-Za-z0-9]+$','url':'^http[s]?:\\/\\/([\\w-]+\\.)+[\\w-]+([\\w-./?%&=]*)?$'}; 
for(var i in self.source){ 
if(i==option.type) 
self.type=self.source[i]; 
} 
self.tag=2; 
self.input=obj; 
self.options=option; 
self.tip=document.getElementById(self.options.tips); 
self.text=self.tip.innerHTML; 
self.init(obj); 
} 
validator.prototype.init=function(o){ 
var self=this; 
addEvent(o,'focus',function(){ 
self.focus(); 
}); 
addEvent(o,'blur',function(){ 
self.valid(); 
}); 
} 
validator.prototype.valid=function(){ 
var self=this; 
var reg=self.options.reg||self.type; 
if(new RegExp(reg).test(self.input.value.replace(/\s/ig,''))){ 
self.tip.className='validator_oncorrect'; 
self.tip.innerHTML='输入正确'; 
self.tag=1; 
}else{ 
self.tip.className='validator_onerror'; 
self.tip.innerHTML='对不起,您输入的内容不符合规则!'; 
self.tag=0; 
} 
} 
validator.prototype.focus=function(){ 
this.tip.className='validator_onfocus'; 
this.tip.innerHTML=this.text; 
} 
function addEvent(el,type,fn){ //绑定事件 
if(el.attachEvent) { 
el['e'+type+fn] = fn; //IE下拷贝元素引用,使this指向el对象而不是window 
el[type+fn] = function(){el['e'+type+fn](window.event);} 
el.attachEvent('on'+type, el[type+fn]); 
}else 
el.addEventListener(type, fn, false); 
} 
//页面调用方法 
var inputs=document.getElementsByTagName('input');//这里的写法感觉怪怪的,不够优雅,暂时也没找到优化的办法 
var arr=[]; 
arr[0]=validator(inputs[0],{type:'postcode',tips:'m1'}); 
arr[1]=validator(inputs[1],{type:'url',tips:'m2'}); 
arr[2]=validator(inputs[2],{type:'email',tips:'m3'}); 
arr[3]=validator(inputs[3],{type:'mobile',tips:'m4'}); 
arr[4]=validator(inputs[4],{type:'integer',tips:'m5',reg:'^-?\\d*$'}); 
function submitForm(){//提交表单过滤 
var l=arr.length; 
for(var i in arr){ 
if(arr[i].tag==1) 
l--; 
else if(arr[i].tag==2){ 
arr[i].valid(); 
} 
} 
if(l!=0)return false; 
}

以下是页面demo,可能缺少一个小图标,汗,不知道怎么发可执行的代码。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" /> 
<meta name="copyright" content="" /> 
<meta name="keywords" content="" /> 
<meta name="description" content="" /> 
<title>验证控件</title> 
<style> 
body {padding:0; margin:0; font: 12px/1.5 Tahoma, Helvetica, Arial, sans-serif;} 
body, h1, h2, h3, h4, h5, h6, hr, p, blockquote,dl, dt, dd, ul, ol, li,pre,form, fieldset, legend, button, input, textarea,th, td {margin: 0;padding: 0;} 
button, input, select, textarea {font: 12px/1.5 tahoma, arial, simsun, sans-serif;} 
h1, h2, h3, h4, h5, h6 { font-size: 100%;font-weight:normal; } 
address, cite, dfn, em, var { font-style: normal; } 
code, kbd, pre, samp { font-family: courier new, courier, monospace; } 
small { font-size: 12px; } 
ul, ol { list-style: none; } 
sup { vertical-align: text-top; } 
sub { vertical-align: text-bottom; } 
legend { color: #000; } 
fieldset, img { border: 0; } 
button, input, select, textarea { font-size: 100%; } 
table { border-collapse: collapse; border-spacing: 0; } 
.clear {clear:both;} 
html { overflow:-moz-bars-vertical; } 
a { text-decoration: none;} 
a:hover { text-decoration: underline;} 
.tabs_panel{margin:10px 0 0 20px;} 
.wrap {clear:left;} 
.left {height:25px;line-height:25px;width:160px;} 
.center {height:auto;padding:3px;width:230px;} 
.right {height:auto;width:350px;} 
.left, .center, .right {float:left;margin:4px;} 
input.txt {border:1px solid #CCCCCC;font-size:14px;height:20px;line-height:20px;width:188px;} 
.validator_onshow {background:url("../images/validator.gif") no-repeat scroll 4px 4px transparent;border:1px solid #3196C4;color:#666666;line-height:20px;padding-left:25px;} 
.validator_onerror {background:url("../images/validator.gif") no-repeat scroll 4px -596px #FFF2E9;border:1px solid #FF6600;color:#666666;line-height:20px;padding-left:25px;} 
.validator_oncorrect {background:url("../images/validator.gif") no-repeat scroll 4px -396px #FFFFFF;border:1px solid #3196C4;font-size:12px;line-height:20px;padding-left:25px;} 
.validator_onfocus {background:url("../images/validator.gif") no-repeat scroll 4px -196px #E2F3FF;border:1px solid #3196C4;color:#666666;line-height:20px;padding-left:25px;} 
</style> 
</head> 
<body> 
<h1>验证控件</h1> 
<div id="example" class="tabs_panel"> 
<form method="post"> 
<div class="wrap"> 
<div class="left">邮编:</div> 
<div class="center"><input type="text" name="validator" class="txt" /></div> 
<div class="right"><div id="m1" class="validator_onshow">邮政编码只能为6位数字,有助于更快邮寄或快递。</div></div> 
</div> 
<div class="wrap"> 
<div class="left">网址:</div> 
<div class="center"><input type="text" name="validator" class="txt" /></div> 
<div class="right"><div id="m2" class="validator_onshow">请正确输入url地址</div></div> 
</div> 
<div class="wrap"> 
<div class="left">邮箱:</div> 
<div class="center"><input type="text" name="validator" class="txt" /></div> 
<div class="right"><div id="m3" class="validator_onshow">请输入正确的E-mail格式,并带有@符号,不区分大小写。</div></div> 
</div> 
<div class="wrap"> 
<div class="left">手机:</div> 
<div class="center"><input type="text" name="validator" class="txt" /></div> 
<div class="right"><div id="m4" class="validator_onshow">手机号码只能为11位数字。</div></div> 
</div> 
<div class="wrap"> 
<div class="left">整数:</div> 
<div class="center"><input type="text" name="validator" class="txt"/></div> 
<div class="right"><div id="m5" class="validator_onshow">请正确输入整数</div></div> 
</div> 
<div class="clear"></div> 
<input type="submit" value="保存" onclick="return submitForm()"/> 
</form> 
</div> 
</body> 
<script type="text/javascript" src="style/js/validator.js"></script> 
</html>
Javascript 相关文章推荐
js 效率组装字符串 StringBuffer
Dec 23 Javascript
原生javascript图片自动或手动切换示例附演示源码
Sep 04 Javascript
JavaScript中读取和保存文件实例
May 08 Javascript
jquery+css实现绚丽的横向二级下拉菜单-附源码下载
Aug 23 Javascript
jsp 自动编译机制详细介绍
Dec 01 Javascript
详解Vue用自定义指令完成一个下拉菜单(select组件)
Oct 31 Javascript
基于jQuery Ajax实现下拉框无刷新联动
Dec 06 jQuery
Angular使用cli生成自定义文件、组件的方法
Sep 04 Javascript
JS实现的tab页切换效果完整示例
Dec 18 Javascript
js实现动态时钟
Mar 12 Javascript
vuejs element table 表格添加行,修改,单独删除行,批量删除行操作
Jul 18 Javascript
Vue+axios封装请求实现前后端分离
Oct 23 Javascript
GreyBox技术总结(转)
Nov 23 #Javascript
Js基础学习资料
Nov 23 #Javascript
JavaScript 程序编码规范
Nov 23 #Javascript
javascript整除实现代码
Nov 23 #Javascript
flexigrid 参数说明
Nov 23 #Javascript
js 判断checkbox是否选中的实现代码
Nov 23 #Javascript
js 处理URL实用技巧
Nov 23 #Javascript
You might like
PHPMailer 中文使用说明小结
2010/01/22 PHP
php 归并排序 数组交集
2011/05/10 PHP
PHP之短标签开启设置
2013/06/17 PHP
php+mysqli预处理技术实现添加、修改及删除多条数据的方法
2015/01/30 PHP
php实现的redis缓存类定义与使用方法示例
2017/08/09 PHP
PHP实现简易计算器功能
2020/08/28 PHP
php使用curl伪造浏览器访问操作示例
2019/09/30 PHP
js实现目录定位正文示例
2013/11/14 Javascript
浅析js预加载/延迟加载
2014/09/25 Javascript
jquery幻灯片插件bxslider样式改进实例
2014/10/15 Javascript
jQuery密码强度检测插件passwordStrength用法实例分析
2015/10/30 Javascript
详解基于Bootstrap扁平化的后台框架Ace
2015/11/27 Javascript
深入解析桶排序算法及Node.js上JavaScript的代码实现
2016/07/06 Javascript
jquery判断类型是不是number类型的实例代码
2016/10/07 Javascript
关于JavaScript中事件绑定的方法总结
2016/10/26 Javascript
canvas实现流星雨的背景效果
2017/01/13 Javascript
js实现3D图片展示效果
2017/03/09 Javascript
通过 JS 判断页面是否有滚动条的实现方法
2018/04/05 Javascript
详解vue-cli项目中怎么使用mock数据
2018/05/29 Javascript
详解angular部署到iis出现404解决方案
2018/08/14 Javascript
小程序实现多选框功能
2018/10/30 Javascript
Vue 组件修改根实例的数据的方法
2019/04/02 Javascript
nodejs搭建本地服务器并访问文件操作示例
2019/05/11 NodeJs
了不起的11个JavaScript代码重构最佳实践小结
2021/01/11 Javascript
python运行时间的几种方法
2016/06/17 Python
python中reload(module)的用法示例详解
2017/09/15 Python
Python matplotlib 画图窗口显示到gui或者控制台的实例
2018/05/24 Python
Python Unittest根据不同测试环境跳过用例的方法
2018/12/16 Python
Python tkinter制作单机五子棋游戏
2020/09/14 Python
Python基于内置函数type创建新类型
2020/10/22 Python
一套VC试题
2015/01/23 面试题
人力资源经理的岗位职责范本
2014/02/28 职场文书
血轮眼轮回眼特效 html+css
2021/03/31 HTML / CSS
Redis 配置文件重要属性的具体使用
2021/05/20 Redis
JavaScript组合继承详解
2021/11/07 Javascript
MySQL读取JSON转换的方式
2022/03/18 MySQL