oform java_客户端表单通用验证checkForm(oForm)(1)
*--------------- 客户端表单通用验证checkForm(oForm) -----------------
* 本程序最初是由wanghr100(灰豆宝宝.net)的checkForm基础上进行修改的,增加了很多功能,如下:
* 1.对非ie的支持
* 2.增加了内置表达式和内置提示
* 3.增加了显示方式(弹出式和页面显示式)
* 4.增加了显示一条和显示全部
* 5.进行了封装(CLASS_CHECK)
* 6.支持外接函数或表达式(应用在密码一致)
* 7.简化了调用方式,所有操作只需要
然后在HTML里定义各标签验证格式
* 8.对IE增加了对键盘输入的限制(如:定义usage='int'时,输入框只能输入数字(非IE无效)
* 9.增加了对disabled的不验证
* 10.自定义报警方式(重写showMessageEx方法)
*-----------------------------申明信息-----------------------------
*
* 作者: ttyp
* 邮箱: ttyp@21cn.com
* 博客: http://www.cnblogs.com/ttyp/
* 声明: 对本程序可以任意复制传播,但请保留这些声明,对于内置的表达式有些没有做到很严格,如果你
有好的建议和意见,欢迎邮件和我联系或者上我的博客留言
* 简介:
本程序只需要对需要验证的标签设置三个属性:usage,exp,tip
usage : 内置格式或表达式或函数
exp : 正则表达式(注意如果指定了usage则忽略exp)
tip : 出错提示(如果是内置格式可以不要此属性,有缺省提示)
调用时只需要引用
增加以上3个属性(不一定需要全部)
* 原作者: wanghr100(灰豆宝宝.net)
* email: wanghr100@126.com
*
*--------------- 客户端表单通用验证checkForm(oForm) -----------------
*/
function CLASS_CHECK()
{
this.pass = true; //是否通过验证
this.showAll = true; //是否显示所有的验证错误
this.alert = false; //报警方式(默认alert报警)
this.message = ""; //错误内容
this.first = null; //在显示全部验证错误时的第一个错误控件(用于回到焦点)
//定义内置格式
var aUsage =
{
"int":"^([+-]?)\\d+$", //整数
"int+":"^([+]?)\\d+$", //正整数
"int-":"^-\\d+$", //负整数
"num":"^([+-]?)\\d*\\.?\\d+$", //数字
"num+":"^([+]?)\\d*\\.?\\d+$", //正数
"num-":"^-\\d*\\.?\\d+$", //负数
"float":"^([+-]?)\\d*\\.\\d+$", //浮点数
"float+":"^([+]?)\\d*\\.\\d+$", //正浮点数
"float-":"^-\\d*\\.\\d+$", //负浮点数
//邮件
"email":"^\\w+((-\\w+)|(\\.\\w+))*\\@[A-Za-z0-9]+((\\.|-)[A-Za-z0-9]+)*\\.[A-Za-z0-9]+$",
"color":"^#[a-fA-F0-9]{6}", //颜色
"url":"^http[s]?:\\/\\/([\\w-]+\\.)+[\\w-]+([\\w-./?%&=]*)?$", //联接
"chinese":"^[\\u4E00-\\u9FA5\\uF900-\\uFA2D]+$", //仅中文
"ascii":"^[\\x00-\\xFF]+$", //仅ACSII字符
"zipcode":"^\\d{6}$", //邮编
"mobile":"^0{0,1}13[0-9]{9}$", //手机
"ip4":"^\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}.\\d{1,3}$", //ip地址
"notempty":"^\\S+$", //非空
"picture":"(.*)\\.(jpg|bmp|gif|ico|pcx|jpeg|tif|png|raw|tga)$", //图片
"rar":"(.*)\\.(rar|zip|7zip|tgz)$", //压缩文件
"date":"^\\d{4}(\\-|\\/|\.)\\d{1,2}\\1\\d{1,2}$" //日期
};
//缺省消息
var aMessage =
{
"int" :"请输入整数", //整数
"int+" :"请输入正整数", //正整数
"int-" :"请输入负整数", //负整数
"num" :"请输入数字", //数字
"num+" :"请输入正数", //正数
"num-" :"请输入负整数", //负数
"float" :"请输入浮点数", //浮点数
"float+":"请输入正浮点数", //正浮点数
"float-":"请输入负浮点数", //负浮点数
"email" :"请输入正确的邮箱地址", //邮件
"color" :"请输入正确的颜色", //颜色
"url" :"请输入正确的连接地址", //联接
"chinese":"请输入中文", //中文
"ascii" :"请输入ascii字符", //仅ACSII字符
"zipcode":"请输入正确的邮政编码", //邮编
"mobile":"请输入正确的手机号码", //手机
"ip4" :"请输入正确的IP地址", //ip地址
"notempty":"不能为空", //非空
"picture":"请选择图片", //图片
"rar" :"请输入压缩文件", //压缩文件
"date" :"请输入正确的日期" //日期
}
var me = this;
function checkForm(oForm)
{
me.pass = true;
me.message = "";
me.first = null;
var els = oForm.elements;
//遍历所有表元素
for(var i=0;i
{
//取得格式
var sUsage = els[i].getAttribute("Usage");
var sReg = "";
//如果设置Usage,则使用内置正则表达式,忽略Exp
if(typeof(sUsage)!="undefined"&&sUsage!=null)
{
//如果Usage在表达室里找到,则使用内置表达式,无则认为是表达式;表达式可以是函数;
if(aUsage[sUsage]!=null)
{
sReg = aUsage[sUsage];
}
else
{
try
{
if(eval(sUsage)==false)
{
me.pass = false;
if(me.first==null)
{
me.first = els[i];
}
addMessage(getMessage(els[i]));
if(me.showAll==false)
{
setFocus(els[i]);
break;
}
}
}
catch(e)
{
alert("表达式[" + sUsage +"]错误:" + e.description)
return false;
}
}
}
else
{
sReg = els[i].getAttribute("Exp");
}
if(typeof(sReg)!="undefined"&&sReg!=null)
{
//对于失效状态不验证
if(isDisabled(els[i])==true)
{
continue;
}
//取得表单的值,用通用取值函数
var sVal = getValue(els[i]);
//字符串->正则表达式,不区分大小写
var reg = new RegExp(sReg,"i");
if(!reg.test(sVal))
{
me.pass = false;
if(me.first==null)
{
me.first = els[i];
}
//alert(reg);
//验证不通过,弹出提示warning
var sTip = getMessage(els[i]);
if(sTip.length==0&&typeof(sUsage)!="undefined"&&sUsage!=null&&aMessage[sUsage]!=null)
{
sTip = aMessage[sUsage];
}
addMessage(sTip);
if(me.showAll==false)
{
//该表单元素取得焦点,用通用返回函数
setFocus(els[i]);
break;
}
}
}
}
if(me.pass==false)
{
showMessage();
if(me.first!=null&&me.showAll==true)
{
setFocus(me.first);
}
}
return me.pass;
}
/*
* 添加错误信息
*/
function addMessage(msg)
{
if(me.alert==true)
{
me.message += msg + "\n";
}
else
{
me.message += msg + "
";
}
}
/*
* 显示错误
*/
function getMessage(els)
{
var sTip = els.getAttribute("tip");
if(typeof(sTip)!="undefined"&&sTip!=null)
{
return sTip;
}
else
{
return "";
}
}
/*
* 显示错误
*/
function showMessage()
{
//外接显示错误函数
if(typeof(me.showMessageEx)=="function")
{
return me.showMessageEx(me.message);
}
if(me.alert==true)
{
alert(me.message);
}
else
{
var divTip;
divTip = document.getElementById("divErrorMessage");
try
{
if(typeof(divTip)=="undefined"||divTip==null)
{
divTip = document.createElement("div");
divTip.id = "divErrorMessage";
divTip.name = "divErrorMessage";
divTip.style.color = "red";
document.body.appendChild(divTip);
}
divTip.innerHTML = me.message;
}catch(e){}
}
}
/*
* 获得元素是否失效(失效的元素不做判断)
*/
function isDisabled(el)
{
//对于radio,checkbox元素,只要其中有一个非失效元素就验证
if(el.type=="radio"||el.type=="checkbox")
{
//取得第一个元素的name,搜索这个元素组
var tmpels = document.getElementsByName(el.name);
for(var i=0;i
{
if(tmpels[i].disabled==false)
{
return false;
}
}
return true;
}
else
{
return el.disabled;
}
}
/*
* 取得对象的值(对于单选多选框把其选择的个数作为需要验证的值)
*/
function getValue(el)
{
//取得表单元素的类型
var sType = el.type;
switch(sType)
{
//文本输入框,直接取值el.value
case "text":
case "hidden":
case "password":
case "file":
case "textarea": return el.value;
//单多下拉菜单,遍历所有选项取得被选中的个数返回结果"0"表示选中一个,"00"表示选中两个
case "checkbox":
case "radio": return getRadioValue(el);
case "select-one":
case "select-multiple": return getSelectValue(el);
}
//取得radio,checkbox的选中数,用"0"来表示选中的个数,我们写正则的时候就可以通过0{1,}来表示选中个数
function getRadioValue(el)
{
var sValue = "";
//取得第一个元素的name,搜索这个元素组
var tmpels = document.getElementsByName(el.name);
for(var i=0;i
{
if(tmpels[i].checked)
{
sValue += "0";
}
}
return sValue;
}
//取得select的选中数,用"0"来表示选中的个数,我们写正则的时候就可以通过0{1,}来表示选中个数
function getSelectValue(el)
{
var sValue = "";
for(var i=0;i
{
//单选下拉框提示选项设置为value=""
if(el.options[i].selected && el.options[i].value!="")
{
sValue += "0";
}
}
return sValue;
}
}
/*
* 对没有通过验证的元素设置焦点
*/
function setFocus(el)
{
//取得表单元素的类型
var sType = el.type;
switch(sType)
{
//文本输入框,光标定位在文本输入框的末尾
case "text":
case "hidden":
case "password":
case "file":
case "textarea":
try{el.focus();var rng = el.createTextRange(); rng.collapse(false); rng.select();}catch(e){};
break;
//单多选,第一选项非失效控件取得焦点
case "checkbox":
case "radio":
var els = document.getElementsByName(el.name);
for(var i=0;i
{
if(els[i].disabled == false)
{
els[i].focus();
break;
}
}
break;
case "select-one":
case "select-multiple":
el.focus();
break;
}
}
//自动绑定到所有form的onsubmit事件
if(window.attachEvent)
{
window.attachEvent("onload",function(){for(var i=0;i
}
else
{
window.onsubmit = function(e){var theFrom = e.target;if(theFrom){return checkForm(theFrom);}}
}
this.keyCheck = function()
{
if(window.attachEvent)
{
window.attachEvent("onload",function(){for(var i=0;i
}
else
{
//TOOD
}
function myKeyCheck(oForm)
{
var els = oForm.elements;
//遍历所有表元素
for(var i=0;i
{
//取得格式
var sUsage = els[i].getAttribute("Usage");
//如果设置Usage,则使用内置正则表达式,忽略Exp
if(typeof(sUsage)!="undefined"&&sUsage!=null)
{
switch(sUsage.toLowerCase ())
{
case "zipcode":
case "int":
els[i].onkeypress = function(){return /\d/.test(String.fromCharCode(event.keyCode))||(this.value.indexOf('+')<0?String.fromCharCode(event.keyCode)=="+":false)||(this.value.indexOf('-')<0?String.fromCharCode(event.keyCode)=="-":false);}
els[i].onpaste = function(){return !clipboardData.getData('text').match(/\D/);}
els[i].ondragenter = function(){return false;}
els[i].style.imeMode= "disabled";
break;
case "mobile":
case "int+":
els[i].onkeypress = function(){return /\d/.test(String.fromCharCode(event.keyCode))||(this.value.indexOf('+')<0?String.fromCharCode(event.keyCode)=="+":false);}
els[i].onpaste = function(){return !clipboardData.getData('text').match(/\D/);}
els[i].ondragenter = function(){return false;}
els[i].style.imeMode= "disabled";
break;
case "int-":
els[i].onkeypress = function(){return /\d/.test(String.fromCharCode(event.keyCode))||(this.value.indexOf('-')<0?String.fromCharCode(event.keyCode)=="-":false);}
els[i].onpaste = function(){return !clipboardData.getData('text').match(/\D/);}
els[i].ondragenter = function(){return false;}
els[i].style.imeMode= "disabled";
break;
case "float":
case "num":
els[i].onkeypress = function(){return /[\+\-\.]|\d/.test(String.fromCharCode(event.keyCode));}
els[i].onpaste = function(){return !clipboardData.getData('text').match(/\D/);}
els[i].ondragenter = function(){return false;}
els[i].style.imeMode= "disabled";
break;
case "float+":
case "num+":
els[i].onkeypress = function(){return /[\+\.]|\d/.test(String.fromCharCode(event.keyCode));}
els[i].onpaste = function(){return !clipboardData.getData('text').match(/\D/);}
els[i].ondragenter = function(){return false;}
els[i].style.imeMode= "disabled";
break;
case "float-":
case "num-":
els[i].onkeypress = function(){return /[\-\.]|\d/.test(String.fromCharCode(event.keyCode));}
els[i].onpaste = function(){return !clipboardData.getData('text').match(/\D/);}
els[i].ondragenter = function(){return false;}
els[i].style.imeMode= "disabled";
break;
case "ascii":
els[i].style.imeMode= "disabled";
break;
case "ip4":
els[i].onkeypress = function(){return /[\.]|\d/.test(String.fromCharCode(event.keyCode));}
els[i].onpaste = function(){return !clipboardData.getData('text').match(/\D/);}
els[i].ondragenter = function(){return false;}
els[i].style.imeMode= "disabled";
els[i].maxLength = 15;
break;
case "color":
els[i].onkeypress = function(){return /[a-fA-Z]|\d/.test(String.fromCharCode(event.keyCode))||(this.value.indexOf('#')<0?String.fromCharCode(event.keyCode)=="#":false);}
els[i].onpaste = function(){return !clipboardData.getData('text').match(/\D/);}
els[i].ondragenter = function(){return false;}
els[i].maxLength = 7;
els[i].style.imeMode= "disabled";
break;
case "date":
els[i].onkeypress = function(){return /[\/\-\.]|\d/.test(String.fromCharCode(event.keyCode));}
els[i].onpaste = function(){return !clipboardData.getData('text').match(/\D/);}
els[i].ondragenter = function(){return false;}
els[i].style.imeMode= "disabled";
break;
}
}
}
}
}
}
//初始化
var g_check = new CLASS_CHECK();
g_check.keyCheck();
posted on 2008-01-25 10:16 强强 阅读(212) 评论(0) 编辑 收藏 所属分类: web技巧
oform java_客户端表单通用验证checkForm(oForm)(1)相关推荐
- 通用客户端表单验证函数修正版
转载:PHPSOHO 通用客户端表单验证函数修正版 主要内容: 一.用法简介: 二.类型定义: 三.程序文件: 历史: 2005.2.25 修改为通用客户端表单验证函数修正版 2004.12.21 ...
- 通用客户端表单验证函数修正版(zz)
通用客户端表单验证函数修正版 主要内容: 一.用法简介: 二.类型定义: 三.程序文件: 历史: 2005.2.25 修改为通用客户端表单验证函数修正版 2004.12.21 1.对整数的范 ...
- 客户端表单验证_客户端的表单验证
客户端表单验证 在客户端进行表单验证是必不可少的-它可以节省时间和带宽,并为您提供更多选择,以指出用户填写表单时出错的地方. 话虽如此,我并不是说您不需要服务器端验证. 访问您网站的用户可能使用旧的浏 ...
- 在ASP.NET中如何用C#.NET实现基于表单的验证
这篇文章引用到了Microsoft .NET类库中的以下名空间: System.Data.SqlClient System.Web.Security ------------------------- ...
- [转]在ASP.NET中如何用C#.NET实现基于表单的验证(二)
(五)创建Logon.aspx页面 1.在已创建好的项目里创建一个新的Web 窗体,名为Logon.aspx. 2.在编辑器里打开Logon.aspx,切换到HTML视图. 3.复制下面代码,然后在编 ...
- 前端学习(1908)vue之电商管理系统电商系统之渲染修改用户的表单预先验证
目录结构 router.js import Vue from 'vue' import Router from 'vue-router' import Login from './components ...
- html表单 asp验证,ASP中JavaScript处理复杂表单的生成与验证
ASP中JavaScript处理复杂表单的生成与验证 更新时间:2007年03月25日 00:00:00 作者: 这里所谓的复杂表单,是指表单中包含多种不同的输入类型,比如下拉列表框.单行文本.多 ...
- 第三章 用检验控件执行表单的验证
第三章 用检验控件执行表单的检验 主要内容: l 使用客户端检验 l 必填域控件:RequiredFieldValidator l 检验表达式控件:RegularExpressionValidator ...
- 新工具:表单/Cookie 验证网站爬网设置工具
在今年3月份的blog里面,我曾经说过SharePoint Team将会发布一个补丁来让SharePoint Server 2007的搜索引擎支持对基于表单/Cookie验证的网站进行爬网.今天,Sh ...
最新文章
- 向人类再进一步|MIT×UMich探索可以理解物体空间关系的人工智能
- instanceof 实现
- 安装mysql 5.5.14 报错
- 13SpringMvc_限定某个业务控制方法,只允许GET或POST请求方式访问
- 今日收到的智商税:远红外
- python释放变量内存_Python尚学堂高淇|1113引用的本质栈内存,堆内存,内存的示意图,标识符,变量的声明初始化,垃圾回收机制...
- 蓝牙Bluetooth技术手册规范下载【转】
- 设计模式之开放封闭原则
- 计算机网络实验报告3-tcp,计算机网络实验报告3-TCP.doc
- linux echo设置颜色
- python商城源码_腾讯大佬用了10小时讲完的Python,整整400集,拿走不谢
- 20190906 On Java8 第十八章 字符串
- 如何保证战略落地_企业战略如何实现落地
- 大数据私房菜--Hadoop完全分布式安装
- 蓝牙配对连接HCI log学习
- 实战 逆向最新黄鸟抓包软件
- 如何创建 Ubuntu 信息亭(kiosk)
- 一个对付小孩便秘的指南,让麻麻不再当催屎员
- MALTAB中 imshow函数出错
- 完美世界16.65亿出售院线业务;共享床位涉黄被下线;宜家创始人去世丨价值早报