用htc实现验证模块
2014-09-25来源:易贤网

代码如下:

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

* validate1.0

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

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

*

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

*

* 海洋工作室

*

* ocean() 制作

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

//键盘事件

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

//粘贴事件

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

//失去焦点事件

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

<SCRIPT LANGUAGE="JScript">

//预定义的检查模式

var regArray = new Array(

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

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

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

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

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

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

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

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

new Array("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+))$","需要输入一个负浮点数,请重新检查"), //负浮点数

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

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

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

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

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

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

new Array("email","^[\\w-]+(","需要输入正确的email地址,请重新检查"), //email地址

new Array("url","^[a-zA-z]+://(>","需要输入正确的url地址,请重新检查") //url

);

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

function doEvent() {

//得到触发事件的类型

var type = window.event.type;

//得到触发元素的值。

var value = window.event.srcElement.value;

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

var keyCode = window.event.keyCode;

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

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

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

}

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

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

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

}

value += String.fromCharCode(keyCode);

}

else if (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;

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

var msg = "";

//得到检查模式

var reg = window.event.srcElement.reg;

//正则表达式对象

var regExp = null;

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

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

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

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

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

else

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

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

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

}

}

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

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

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

else

regExp = new RegExp(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>

<style type="text/css">

TABLE {

width:100%;

}

INPUT {

behavior:url("validate.htc");

}

</style>

</head>

<body style="margin:0">

<table>

<tr><td><a href="> border="0" src="logo.jpg"></a></td></tr>

</table>

<br>

<table style="margin-left:20px">

<tr>

<td>验证规则</td>

<td>实时检测</td>

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

</tr>

<tr>

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

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

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

</tr>

<tr>

<td>正整数</td>

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

<td><input type="text" value="" reg="int+"></td>

</tr>

<tr>

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

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

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

</tr>

<tr>

<td>负整数</td>

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

<td><input type="text" value="" reg="int-"></td>

</tr>

<tr>

<td>整数</td>

<td><input type="text" value="" reg="int" check></td>

<td><input type="text" value="" reg="int"></td>

</tr>

<tr>

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

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

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

</tr>

<tr>

<td>正浮点数</td>

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

<td><input type="text" value="" reg="double+"></td>

</tr>

<tr>

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

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

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

</tr>

<tr>

<td>负浮点数</td>

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

<td><input type="text" value="" reg="double-"></td>

</tr>

<tr>

<td>浮点数</td>

<td><input type="text" value="" reg="double" check></td>

<td><input type="text" value="" reg="double"></td>

</tr>

<tr>

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

<td><input type="text" value="" reg="char" check></td>

<td><input type="text" value="" reg="char"></td>

</tr>

<tr>

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

<td><input type="text" value="" reg="upperchar" check upper></td>

<td><input type="text" value="" reg="upperchar" upper></td>

</tr>

<tr>

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

<td><input type="text" value="" reg="lowerchar" check lower></td>

<td><input type="text" value="" reg="lowerchar" lower></td>

</tr>

<tr>

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

<td><input type="text" value="" reg="digitchar" check></td>

<td><input type="text" value="" reg="digitchar"></td>

</tr>

<tr>

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

<td><input type="text" value="" reg="digitchar_" check></td>

<td><input type="text" value="" reg="digitchar_"></td>

</tr>

<tr>

<td>email地址</td>

<td><input type="text" value="" reg="email" check></td>

<td><input type="text" value="" reg="email"></td>

</tr>

<tr>

<td>url</td>

<td><input type="text" value="" reg="url" check></td>

<td><input type="text" value="" reg="url"></td>

</tr>

<tr>

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

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

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

</tr>

</table>

<hr width="50%" style="color: #FF0000">

<div style="text-align:center;font-size:9pt">copyright 2004 © 海洋工作室(<a href=">)</div>

<p> </p>

<p> </p>

<p> </p>

<p> </p>

</body>

</html>

更多信息请查看IT技术专栏

2025公考·省考培训课程试听预约报名

  • 报班类型
  • 姓名
  • 手机号
  • 验证码
推荐信息