<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>登录与注册</title>
<script type="text/javascript">
var check={
/**/
/*定义提示信息*/
e1:"两次输入的密码不一致",
e2:"-请填写此项",
e3:"-请正确填写此项",
e4:"-输入长度不能小于",
e5:"-输入长度不能超过",
/*定义验证正则表达*/
Email : /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/,
Phone : /^((\(\d{2,3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}(\-\d{1,4})?$/,
Mobile : /^((\(\d{2,3}\))|(\d{3}\-))?13\d{9}$/,
Url : /^http:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"])*$/,
Currency : /^\d+(\.\d+)?$/,
Number : /^\d+$/,
Zip : /^[1-9]\d{5}$/,
QQ : /^[1-9]\d{4,8}$/,
Integer : /^[-\+]?\d+$/,
Double : /^[-\+]?\d+(\.\d+)?$/,
English : /^[A-Za-z]+$/,
Chinese : /^[\u0391-\uFFE5]+$/,
Username : /^[a-z]\w{3,}$/i,
UnSafe : /^(([A-Z]*|[a-z]*|\d*|[-_\~!@#\$%\^&\*\.\(\)\[\]\{\}<>\?\\\/\'\"]*)|.{0,5})$|\s/,
/*获取表单对象*/
$:function(id){return document.getElementById(id);},
/*获取表单值*/
$v:function(id){return (this.$(id)? this.$(id).value:null);},
toL:function(str){return str.toLowerCase();}, //字符串转换成小写
toU:function(str){return str.toUpperCase();}, //字符串转换成大写
/*检查两次输入的密码是否相同,不同的话返回提示信息*/
pwd:function(id1,id2){with(this){if($v(id1)!=$v(id2)){$(id2).value='';return e1;}return ''}},
/*用正则表达式验证表单值是否符合,如f='REmail4-10'表示必须填写格式为Email的长度4-10的字符串*/
reg:function (id,f){
var val=this.$(id);if(val){val=val.value}else{return 'arguments error'};
/*以下判断表单是否必须填写,如果是表单为空时返回错误*/
if(f.indexOf('R')==0){f=f.substring(1);if(!val)return this.e2;}
/*当表单值不为空时判断值的类型是否符合*/
if(val){
var t=/([A-Za-z]*)(\d*)\-*(\d*)/; //取出判断判断字符串中的规则名称,最小长度,最大长度
if(t.test(f)){
t.exec(f);r1=RegExp.$1;r2=RegExp.$2;r3=RegExp.$3;
if(r1){if(this[r1])if(!this[r1].test(val))return this.e3;}//判断类型
if(r2 && val.length<r2){return this.e4+r2;} //判断长度是否小于设定
if(r3 && val.length>r3){return this.e5+r3;} //判断长度是否超过设定
}
}
return '';
},
/*根据参数类型调用判断函数,返回提示信息*/
error:function(id,id2){with(this){return ((toL(id)!=toL(id2) && $(id2))?pwd(id,id2):reg(id,id2));}},
errors:function(){
var args=arguments,e,ers='';
for(i=0;i<(args.length-1);i+=2){e=this.error(args[i],args[i+1]);if(e)ers+=e;}
return ers; //返回多条出错信息
},
/*弹出提示信息*/
alt:function(){
var args=arguments,e,ers='';
for(i=0;i<(args.length-2);i+=3){e=this.error(args[i],args[i+1]);if(e)ers+=args[i+2]+e+"\n";}
if(ers){ers="以下填写有误:\n"+ers;alert(ers);}
return (ers =='');
},
/*将一条提示信息显示到span*/
info:function(id,id2,span){
with(this){if($(span)){ers=error(id,id2);$(span).innerHTML=ers;return (ers=='');}return false;}
},
/*将多条信息显示到span里面如check.infos('spanid','id1','reg1','info1','id2','reg2','info2')*/
infos:function(span){
with(this){
if($(span)){
var args=arguments,e,ers='';
for(i=1;i<(args.length-2);i+=3){e=this.error(args[i],args[i+1]);if(e)ers+=args[i+2]+e+"\n";}
$(span).innerHTML=ers; return (ers =='');
}return false;
}
}
}
</script>
</head>
<body>
<div>
<form action="" method="post" onsubmit="return check.infos('errors','name','RUsername','姓名','eml','REmail','电子邮箱');">
<div id="errors"></div>
<label>注册名称
<input name="name" maxlength="15" type="text"/><span id="forname"></span></label><br />
<label>登录密码
<input name="pwd1" type="text" onblur="return"/></label><br />
<label>重复密码
<input name="pwd2" type="text" onblur="check.info('pwd1','pwd2','pp')"/>
<span id="pp"></span></label><br />
<label>电子邮箱
<input name="eml" type="text" onblur=""/></label><br />
<input name="actions" type="submit" />
</form>
</div>
</body>
</html>