45fan.com - 路饭网

搜索: 您的位置主页 > 网络频道 > 阅读资讯:分享htc实现验证模块的代码

分享htc实现验证模块的代码

2015-07-14 14:27:37 来源:www.45fan.com 【

分享htc实现验证模块的代码

复制代码 代码如下:

/***************************************************************************************

*validate1.0

*此代码版权归海洋工作室ocean所有,您可以非商业目的使用、复制、修改此代码,但需要

*保留本工作室的版权信息。如果您使用、修改此代码为商业目的,请联系本工作室取得使用许可。

*

*如果您对本程序有什么建议,请emailto:ocean@forever.net.cn。

*

*海洋工作室

*http://www.oceanstudio.net

*ocean(ocean@forever.net.cn)制作

*****************************************************************************************/

//键盘事件

<PUBLIC:ATTACHEVENT="onkeypress"ONEVENT="doEvent()"/>

//粘贴事件

<PUBLIC:ATTACHEVENT="onpaste"ONEVENT="doEvent()"/>

//失去焦点事件

<PUBLIC:ATTACHEVENT="onblur"ONEVENT="doEvent()"/>

<SCRIPTLANGUAGE="JScript">

//预定义的检查模式

varregArray=newArray(

newArray("int+0","^\\d+$","","需要输入一个非负整数,请重新检查"),//非负整数(正整数+0)

newArray("int+","^[0-9]*[1-9][0-9]*$","^\\d+$","需要输入一个正整数,请重新检查"),//正整数

newArray("int-0","^((-\\d+)|(0+))$","^(-|(-\\d+)|(0+))$","需要输入一个非正整数,请重新检查"),//非正整数(负整数+0)

newArray("int-","^-[0-9]*[1-9][0-9]*$","^(-|(-\\d+)|(0+))$","需要输入一个负整数,请重新检查"),//负整数

newArray("int","^-?\\d+$","^-|(-?\\d+)$","需要输入一个整数,请重新检查"),//整数

newArray("double+0","^\\d+(\\.\\d+)?$","^((\\d+\\.)|(\\d+(\\.\\d+)?))$","需要输入一个非负浮点数,请重新检查"),//非负浮点数(正浮点数+0)

newArray("double+","^(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*))$","^((\\d+\\.)|(\\d+(\\.\\d+)?))$","需要输入一个正浮点数,请重新检查"),//正浮点数

newArray("double-0","^((-\\d+(\\.\\d+)?)|(0+(\\.0+)?))$","^(-|(-\\d+\\.)|(0+\\.)|(-\\d+(\\.\\d+)?)|(0+(\\.0+)?))$","需要输入一个非正浮点数,请重新检查"),//非正浮点数(负浮点数+0)

newArray("double-","^(-(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*)))$","^(-|(-\\d+\\.?)|(-\\d+\\.\\d+))$","需要输入一个负浮点数,请重新检查"),//负浮点数

newArray("double","^(-?\\d+)(\\.\\d+)?$","^(-|((-?\\d+)(\\.\\d+)?)|(-?\\d+)\\.)$","需要输入一个浮点数,请重新检查"),//浮点数

newArray("char","^[A-Za-z]+$","","您只能输入英文字母,请重新检查"),//由26个英文字母组成的字符串

newArray("upperchar","^[A-Z]+$","","您只能输入英文大写字母,请重新检查"),//由26个英文字母的大写组成的字符串

newArray("lowerchar","^[a-z]+$","","您只能输入英文小写字母,请重新检查"),//由26个英文字母的小写组成的字符串

newArray("digitchar","^[A-Za-z0-9]+$","","您只能输入数字和英文字母,请重新检查"),//由数字和26个英文字母组成的字符串

newArray("digitchar_","^\\w+$","","您只能输入数字、英文字母和下划线,请重新检查"),//由数字、26个英文字母或者下划线组成的字符串

newArray("email","^[\\w-]+(\\.[\\w-]+)*@[\\w-]+(\\.[\\w-]+)+$","^(([\\w-]+(\\.[\\w-]+)*@?)|([\\w-]+(\\.[\\w-]+)*@[\\w-]+)|([\\w-]+(\\.[\\w-]+)*@([\\w-]+\\.)+)|([\\w-]+(\\.[\\w-]+)*@[\\w-]+(\\.[\\w-]+)+))$","需要输入正确的email地址,请重新检查"),//email地址

newArray("url","^[a-zA-z]+://(\\w+(-\\w+)*)(\\.(\\w+(-\\w+)*))*(\\?\\S*)?$","^([a-zA-z]+:?)|([a-zA-z]+:/{1,2})|([a-zA-z]+://(\\w+(-\\w+)*))|([a-zA-z]+://(\\w+(-\\w+)*)(\\.(\\w+(-\\w+)*))*(\\?\\S*)?)$","需要输入正确的url地址,请重新检查")//url

);

//受控元素默认的事件处理程序

functiondoEvent(){

//得到触发事件的类型

vartype=window.event.type;

//得到触发元素的值。

varvalue=window.event.srcElement.value;

if(type=="keypress"){//如果是键盘按下事件,得到键盘按下后的值

varkeyCode=window.event.keyCode;

if(typeof(window.event.srcElement.upper)!="undefined"){//如果定义了转换大写

if(keyCode>=97&&keyCode<=122)

keyCode=window.event.keyCode=keyCode-32;

}

elseif(typeof(window.event.srcElement.lower)!="undefined"){//如果定义了转换小写

if(keyCode>=65&&keyCode<=90)

keyCode=window.event.keyCode=keyCode+32;

}

value+=String.fromCharCode(keyCode);

}

elseif(type=="paste"){

value+=window.clipboardData.getData("Text");

}

//如果触发元素的值为空,则表示用户没有输入,不接受检查。

if(value=="")return;

//如果触发元素没有设置reg属性,则返回不进行任何检查。

if(typeof(window.event.srcElement.reg)=="undefined")return;

//如果触发元素没有定义check属性,则在按键和粘贴事件中不做检查

if((type=="keypress"||type=="paste")&&typeof(window.event.srcElement.check)=="undefined")return;

//如果没有通过检查模式,出现的错误信息

varmsg="";

//得到检查模式

varreg=window.event.srcElement.reg;

//正则表达式对象

varregExp=null;

//从预定义的检查模式中查找正则表达式对象

for(vari=0;i<regArray.length;i++){

if(regArray[i][0]==reg){

if((type=="keypress"||type=="paste")&®Array[i][2]!="")

regExp=newRegExp(regArray[i][2]);//查找到预定义的检查模式

else

regExp=newRegExp(regArray[i][1]);//查找到预定义的检查模式

msg=regArray[i][3];//定义预定义的报错信息

break;//查找成功,退出循环

}

}

if(regExp==null){//如果没有查找到预定义的检查模式,说明reg本身就为正则表达式对象。

if((type=="keypress"||type=="paste")&&typeof(window.event.srcElement.regcheck)!="undefined")

regExp=newRegExp(window.event.srcElement.regcheck);//按照用户自定义的正则表达式生成正则表达式对象。

else

regExp=newRegExp(reg);//按照用户自定义的正则表达式生成正则表达式对象。

msg="输入错误,请重新检查";//错误信息

}

//检查触发元素的值符合检查模式,直接返回。

if(regExp.test(value))return;

if(type=="blur"){//如果是失去焦点并且检查不通过,则需要出现错误警告框。

//判断用户是否自己定义了错误信息

if(typeof(window.event.srcElement.msg)!="undefined")

msg=window.event.srcElement.msg;

//显示错误信息

alert(msg);

//将焦点重新聚回触发元素

window.event.srcElement.focus();

window.event.srcElement.select();

}

else{//如果是键盘按下或者粘贴事件并且检查不通过,则取消默认动作。

//取消此次键盘按下或者粘贴操作

window.event.returnValue=false;

}

}

</SCRIPT>

应用例子:

复制代码 代码如下:

<html>

<head>

<styletype="text/css">

TABLE{

width:100%;

}

INPUT{

behavior:url("validate.htc");

}

</style>

</head>

<bodystyle="margin:0">

<table>

<tr><td><ahref="http://www.oceanstudio.net"><imgborder="0"src="logo.jpg"></a></td></tr>

</table>

<br>

<tablestyle="margin-left:20px">

<tr>

<td>验证规则</td>

<td>实时检测</td>

<td>失去焦点时检测</td>

</tr>

<tr>

<td>非负整数(正整数+0)</td>

<td><inputtype="text"value=""reg="int+0"check></td>

<td><inputtype="text"value=""reg="int+0"></td>

</tr>

<tr>

<td>正整数</td>

<td><inputtype="text"value=""reg="int+"check></td>

<td><inputtype="text"value=""reg="int+"></td>

</tr>

<tr>

<td>非正整数(负整数+0)</td>

<td><inputtype="text"value=""reg="int-0"check></td>

<td><inputtype="text"value=""reg="int-0"></td>

</tr>

<tr>

<td>负整数</td>

<td><inputtype="text"value=""reg="int-"check></td>

<td><inputtype="text"value=""reg="int-"></td>

</tr>

<tr>

<td>整数</td>

<td><inputtype="text"value=""reg="int"check></td>

<td><inputtype="text"value=""reg="int"></td>

</tr>

<tr>

<td>非负浮点数(正浮点数+0)</td>

<td><inputtype="text"value=""reg="double+0"check></td>

<td><inputtype="text"value=""reg="double+0"></td>

</tr>

<tr>

<td>正浮点数</td>

<td><inputtype="text"value=""reg="double+"check></td>

<td><inputtype="text"value=""reg="double+"></td>

</tr>

<tr>

<td>非正浮点数(负浮点数+0)</td>

<td><inputtype="text"value=""reg="double-0"check></td>

<td><inputtype="text"value=""reg="double-0"></td>

</tr>

<tr>

<td>负浮点数</td>

<td><inputtype="text"value=""reg="double-"check></td>

<td><inputtype="text"value=""reg="double-"></td>

</tr>

<tr>

<td>浮点数</td>

<td><inputtype="text"value=""reg="double"check></td>

<td><inputtype="text"value=""reg="double"></td>

</tr>

<tr>

<td>由26个英文字母组成的字符串</td>

<td><inputtype="text"value=""reg="char"check></td>

<td><inputtype="text"value=""reg="char"></td>

</tr>

<tr>

<td>由26个英文字母的大写组成的字符串(输入小写字母会自动转换成大写)</td>

<td><inputtype="text"value=""reg="upperchar"checkupper></td>

<td><inputtype="text"value=""reg="upperchar"upper></td>

</tr>

<tr>

<td>由26个英文字母的小写组成的字符串(输入大写字母会自动转换成小写)</td>

<td><inputtype="text"value=""reg="lowerchar"checklower></td>

<td><inputtype="text"value=""reg="lowerchar"lower></td>

</tr>

<tr>

<td>由数字和26个英文字母组成的字符串</td>

<td><inputtype="text"value=""reg="digitchar"check></td>

<td><inputtype="text"value=""reg="digitchar"></td>

</tr>

<tr>

<td>由数字、26个英文字母或者下划线组成的字符串</td>

<td><inputtype="text"value=""reg="digitchar_"check></td>

<td><inputtype="text"value=""reg="digitchar_"></td>

</tr>

<tr>

<td>email地址</td>

<td><inputtype="text"value=""reg="email"check></td>

<td><inputtype="text"value=""reg="email"></td>

</tr>

<tr>

<td>url</td>

<td><inputtype="text"value=""reg="url"check></td>

<td><inputtype="text"value=""reg="url"></td>

</tr>

<tr>

<td>自定义规则(只能输入"aaa"),自定义报错信息</td>

<td><inputtype="text"value=""reg="^aaa$"regcheck="^a{1,3}$"msg="只能输入aaa"check></td>

<td><inputtype="text"value=""reg="^aaa$"regcheck="^a{1,3}$"msg="只能输入aaa"></td>

</tr>

</table>

<hrwidth="50%"style="color:#FF0000">

<divstyle="text-align:center;font-size:9pt">copyright2004©海洋工作室(<ahref="mailto:ocean@forever.net.cn">ocean@forever.net.cn</a>)</div>

<p></p>

<p></p>

<p></p>

<p></p>

</body>

</html>

本文地址:http://www.45fan.com/a/question/14449.html
Tags: 实现 验证 HTC
编辑:路饭网
关于我们 | 联系我们 | 友情链接 | 网站地图 | Sitemap | App | 返回顶部