用htc实现验证模块

代码如下:

/***************************************************************************************
 *                                   validate1.0
 *     此代码版权归海洋工作室ocean所有,您可以非商业目的使用、复制、修改此代码,但需要
 * 保留本工作室的版权信息。如果您使用、修改此代码为商业目的,请联系本工作室取得使用许可。
 *
 * 如果您对本程序有什么建议,请email to:ocean@forever.net.cn。
 *
 *                                                                          海洋工作室
 *                                                          http://www.oceanstudio.net
 *                                                     ocean(ocean@forever.net.cn) 制作
 *****************************************************************************************/
//键盘事件
<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+(\\.\\d+)?$","^((\\d+\\.)|(\\d+(\\.\\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-0","^((-\\d+(\\.\\d+)?)|(0+(\\.0+)?))$","^(-|(-\\d+\\.)|(0+\\.)|(-\\d+(\\.\\d+)?)|(0+(\\.0+)?))$","需要输入一个非正浮点数,请重新检查"),    //非正浮点数(负浮点数 + 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+)(\\.\\d+)?$","^(-|((-?\\d+)(\\.\\d+)?)|(-?\\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-]+(\\.[\\w-]+)*@[\\w-]+(\\.[\\w-]+)+$","^(([\\w-]+(\\.[\\w-]+)*@?)|([\\w-]+(\\.[\\w-]+)*@[\\w-]+)|([\\w-]+(\\.[\\w-]+)*@([\\w-]+\\.)+)|([\\w-]+(\\.[\\w-]+)*@[\\w-]+(\\.[\\w-]+)+))$","需要输入正确的email地址,请重新检查"),        //email地址
    new Array("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
);
//受控元素默认的事件处理程序
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="http://www.oceanstudio.net"><img 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 &copy 海洋工作室(<a href="mailto:ocean@forever.net.cn">ocean@forever.net.cn</a>)</div>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
</body>
</html>

(0)

相关推荐

  • 用htc实现验证模块

    复制代码 代码如下: /***************************************************************************************  *                                   validate1.0  *     此代码版权归海洋工作室ocean所有,您可以非商业目的使用.复制.修改此代码,但需要  * 保留本工作室的版权信息.如果您使用.修改此代码为商业目的,请联系本工作室取得使用许可.  *  

  • 超详细讲解Java秒杀项目用户验证模块的实现

    目录 一.用户验证 1.在方法内添加请求与反应 2.cookie操作的封装 3.UserServiceImpl 4.跳转界面PathController 二.全局session 1.导入依赖 2.配置yml文件redis 3.开启虚拟机 三.自定义redis实现功能 1.新建RedisConfig文件 2.实现全局session 四.使用参数解析器 1.新建WebConfig文件 2.定义参数解析器 3.PathController 4.访问主界面得到相关信息: 接着上期内容超详细讲解Java秒

  • NodeJS 实现手机短信验证模块阿里大于功能

    1,NodeJS 安装阿里大于模块 切换到项目目录使用npm 安装阿里于模块 npm i node-alidayu --save 2,aliyu官网使用淘宝账户登录 登录阿里大于 https://doc.alidayu.com/doc2/index.htm 1登录后点击管理中心 2点击应用管理===>创建应用 3配置管理===>验证码====>里添加短信签名 4应用列表里===>操作一栏===>点击设置    记住 app   key 和 APP  sercret 5.后台代

  • Vue表单验证插件的制作过程

    前言 前段时间,老大搭好了Vue的开发环境,于是我们愉快地从JQ来到了Vue.这中间做的时候,在表单验证上做的不开心,看到vue的插件章节,感觉自己也能写一个,因此就自己开始写了一个表单验证插件va.js. 当然为什么不找个插件呢? vue-validator呀. 1.我想了下,一个是表单验证是个高度定制化的东西,这种网上找到的插件为了兼顾各个公司的需求,所以加了很多功能,这些我们不需要.事实证明,vue-validator有50kb,而我写的va.js只有8kb. 2.另一个是,vue-val

  • asp.net身份验证方式介绍

    windows身份验证: IIS根据应用程序的设置执行身份验证.要使用这种验证方式,在IIS中必须禁用匿名访问. Forms验证:用Cookie来保存用户凭证,并将 未经身份验证的用户重定向到自定义的登录页. Passport验证:通过Microsoft的集中身份验证服务执行的,他为成员站点提供单独登录 和核心配置文件服务. 一. 配置windows身份验证 1)配置IIS设置 of Dern)" alt="asp.net身份验证方式(ref:DreamSpace of Dern)&q

  • Codeigniter实现处理用户登录验证后的URL跳转

    Codeigniter处理用户登录验证后URL跳转,主要涉及到了My_Controller.php页面以及登录验证模块User.php页面,具体代码如下: My_Controller.php页面: 复制代码 代码如下: class MY_Controller extends CI_Controller{    public function __construct()    {        parent::__construct();        /*判断是否登录,判断当前URL是否是aut

  • 详解Nginx服务器的nginx-http-footer-filter模块配置

    nginx-http-footer-filter想必大家都觉得很陌生,那我们就来认识一下它吧,这是淘宝开发的nginx模块. 它用于nginx在响应请求文件底部追加内容. 今天抽空研究下这个插件,希望对大家有所帮助.为什么发现了这个插件,因为这几天公司需要在所有shtml文件后面追加一个js代码用来做统计(之前统计代码没加齐全),在寻求解决方法的过程中找到了它认识了它最后喜欢上了它,你可能以为我用这个插件去实现了我要的功能,其实在认识他之前我用shell脚本替换齐全了. 不过我还是决定研究测试一

  • 在 Ubuntu 和 Debian 上启用双因子身份验证的三种备选方案

    如何为你的 SSH 服务器安装三种不同的双因子身份验证方案. 如今,安全比以往更加重要,保护 SSH 服务器是作为系统管理员可以做的最为重要的事情之一.传统地,这意味着禁用密码身份验证而改用 SSH 密钥.无疑这是你首先应该做的,但这并不意味着 SSH 无法变得更加安全. 双因子身份验证就是指需要两种身份验证才能登录.可以是密码和 SSH 密钥,也可以是密钥和第三方服务,比如 Google.这意味着单个验证方法的泄露不会危及服务器. 以下指南是为 SSH 启用双因子验证的三种方式. 当你修改 S

  • Python Mock模块原理及使用方法详解

    一.mock是什么? 英译中含义有:虚假的; 不诚实的; 模仿的; 模拟的 这个意思 这个库的主要功能就是模拟一些事务 官方解释:Mock是Python中一个用于支持单元测试的库,它的主要功能是使用mock对象替代掉指定的Python对象,以达到模拟对象的行为 二.为什么要用mock? 举例: 假设你开发一个项目,里面包含了一个登录模块,登录模块需要调用身份证验证模块中的认证函数,该认证函数会进行值的返回,然后系统根据这个返回值来做判断是否能进行登录.但是身份证验证模块中的认证函数只有在正式上线

  • Java + Selenium + OpenCV解决自动化测试中的滑块验证问题

    目录 1.滑块验证思路 2.使用OpenCV进行图片解析 2.1 OpenCV引入项目 2.2 实现图片解析,计算所需距离 2.3 算法解析说明 3.Selenium处理滑块滑动 4.最终效果 最近工作过程中,一个常用的被测网站突然增加了滑块验证环节,导致整个自动化项目失效了. 为了解决这个滑块验证问题,在网上查阅了一些资料后,总结并实现了解决方案,现记录如下. 1.滑块验证思路 被测对象的滑块对象长这个样子.相对而言是比较简单的一种形式,需要将左侧的拼图通过下方的滑块进行拖动,嵌入到右侧空槽中

随机推荐