validator验证控件使用代码
validator验证控件使用代码
发布时间:2016-12-30 来源:查字典编辑
摘要:下面是js代码(在绑定对象的时候感觉很不优雅,希望高人能指点一二啊!)复制代码代码如下:functionvalidator(obj,opti...

下面是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">

<form method="post">

<div>

<div>邮编:</div>

<div><input type="text" name="validator" /></div>

<div><div id="m1">邮政编码只能为6位数字,有助于更快邮寄或快递。</div></div>

</div>

<div>

<div>网址:</div>

<div><input type="text" name="validator" /></div>

<div><div id="m2">请正确输入url地址</div></div>

</div>

<div>

<div>邮箱:</div>

<div><input type="text" name="validator" /></div>

<div><div id="m3">请输入正确的E-mail格式,并带有@符号,不区分大小写。</div></div>

</div>

<div>

<div>手机:</div>

<div><input type="text" name="validator" /></div>

<div><div id="m4">手机号码只能为11位数字。</div></div>

</div>

<div>

<div>整数:</div>

<div><input type="text" name="validator"/></div>

<div><div id="m5">请正确输入整数</div></div>

</div>

<div></div>

<input type="submit" value="保存"/>

</form>

</div>

</body>

<script type="text/javascript" src="style/js/validator.js"></script>

</html>

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新Javascript教程学习
热门Javascript教程学习
编程开发子分类