`

一个非常强大完整的web表单验证程序

阅读更多

<title>表单验证类 Validator v1.0</title>

<style>

body,td{font:normal 12px Verdana;color:#333333}

input,textarea,select,td{font:normal 12px Verdana;color:#333333;border:1px solid
#999999;background:#ffffff}

table{border-collapse:collapse;}

td{padding:3px}

input{height:20;}

textarea{width:80%;height:50px;overflow:auto;}

form{display:inline}

</style>

<table align="center">

<form name="theForm" id="demo" action="" method="get"
onSubmit="return Validator.Validate(this,2)">

<tr>

<td>真实姓名:</td><td><input name="Name" dataType="Chinese"
msg="真实姓名只允许中文"></td>

</tr>

<tr>

<td>英文名:</td><td><input name="Nick" dataType="English"
require="false" msg="英文名只允许英文字母"></td>

</tr>

<tr>

<td>主页:</td><td><input name="Homepage" require="false"
dataType="Url" msg="非法的Url"></td>

</tr>

<tr>

<td>密码:</td><td><input name="Password" dataType="SafeString"
msg="密码不符合安全规则" type="password"></td>

</tr>

<tr>

<td>重复:</td><td><input name="Repeat" dataType="Repeat"
to="Password" msg="两次输入的密码不一致" type="password"></td>

</tr>

<tr>

<td>信箱:</td><td><input name="Email" dataType="Email"
msg="信箱格式不正确"></td>

</tr>

<tr>

<td>信箱:</td><td><input name="Email" dataType="Repeat"
to="Email" msg="两次输入的信箱不一致"></td>

</tr>

<tr>

<td>QQ:</td><td><input name="QQ" require="false"
dataType="QQ" msg="QQ号码不存在"></td>

</tr>

<tr>

<td>身份证:</td><td><input name="Card" dataType="IdCard"
msg="身份证号码不正确"></td>

</tr>

<tr>

<td>年龄:</td><td><input name="Year" dataType="Range"
msg="年龄必须在18~28之间" min="18" max="28"></td>

</tr>

<tr>

<td>年龄1:</td><td><input name="Year1" require="false"
dataType="Compare" msg="年龄必须在18以上" to="18" operator="GreaterThanEqual"></td>

</tr>

<tr>

<td>电话:</td><td><input name="Phone" require="false"
dataType="Phone" msg="电话号码不正确"></td>

</tr>

<tr>

<td>手机:</td><td><input name="Mobile" require="false"
dataType="Mobile" msg="手机号码不正确"></td>

</tr>

<tr>

<td>生日:</td><td><input name="Birthday" dataType="Date"
format="ymd" msg="生日日期不存在"></td>

</tr>

<tr>

<td>邮政编码:</td><td><input name="Zip" dataType="Custom"
regexp="^[1-9]\d{5}$" msg="邮政编码不存在"></td>

</tr>

<tr>

<td>邮政编码:</td><td><input name="Zip1" dataType="Zip"
msg="邮政编码不存在"></td>

</tr>

<tr>

<td>操作系统:</td><td><select name="Operation" dataType="Require"
msg="未选择所用操作系统" ><option value="">选择您所用的操作系统</option><option
value="Win98">Win98</option><option value="Win2k">Win2k</option><option
value="WinXP">WinXP</option></select></td>

</tr>

<tr>

<td>所在省份:</td><td>广东<input name="Province" value="1"
type="radio">陕西<input name="Province" value="2"
type="radio">浙江<input name="Province" value="3"
type="radio">江西<input name="Province" value="4"
type="radio" dataType="Group" msg="必须选定一个省份" ></td>

</tr>

<tr>

<td>爱好:</td><td>运动<input name="Favorite" value="1"
type="checkbox">上网<input name="Favorite" value="2"
type="checkbox">听音乐<input name="Favorite" value="3"
type="checkbox">看书<input name="Favorite" value="4"
type="checkbox"" dataType="Group" min="2" max="3"
msg="必须选择2~3种爱好"></td>

</tr>

<td>自我介绍:</td><td><textarea name="Description"
dataType="Limit" max="10" msg="自我介绍内容必须在10个字之内">中文是一个字</textarea></td>

</tr>

<td>自传:</td><td><textarea name="History" dataType="LimitB"
min="3" max="10" msg="自传内容必须在[3,10]个字节之内">中文是两个字节t</textarea></td>

</tr>

<tr>

<td colspan="2"><input name="Submit" type="submit"
value="确定提交"><input onClick="Validator.Validate(document.getElementById('demo'))"
value="检验模式1" type="button"><input onClick="Validator.Validate(document.getElementById('demo'),2)"
value="检验模式2" type="button"><input onClick="Validator.Validate(document.getElementById('demo'),3)"
value="检验模式3" type="button"></td>

</tr>

</form>

</table>

<script>

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

Validator v1.0

cody by 我佛山人

wfsr@cunite.com

http://www.cunite.com

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

Validator = {

Require : /.+/,

Email : /^\w+([-+.]\w+)*@\w+([-.]\\w+)*\.\w+([-.]\w+)*$/,

Phone : /^((\(\d{3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}$/,

Mobile : /^((\(\d{3}\))|(\d{3}\-))?13\d{9}$/,

Url : /^http:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"])*$/,

IdCard : /^\d{15}(\d{2}[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]+$/,

UnSafe : /^(([A-Z]*|[a-z]*|\d*|[-_\~!@#\$%\^&\*\.\(\)\[\]\{\}<>\?\\\/\'\"]*)|.{0,5})$|\s/,

IsSafe : function(str){return !this.UnSafe.test(str);},

SafeString : "this.IsSafe(value)",

Limit : "this.limit(value.length,getAttribute('min'), getAttribute('max'))",

LimitB : "this.limit(this.LenB(value), getAttribute('min'), getAttribute('max'))",

Date : "this.IsDate(value, getAttribute('min'), getAttribute('format'))",

Repeat : "value == document.getElementsByName(getAttribute('to'))[0].value",

Range : "getAttribute('min') < value && value < getAttribute('max')",

Compare : "this.compare(value,getAttribute('operator'),getAttribute('to'))",

Custom : "this.Exec(value, getAttribute('regexp'))",

Group : "this.MustChecked(getAttribute('name'), getAttribute('min'), getAttribute('max'))",

ErrorItem : [document.forms[0]],

ErrorMessage : ["以下原因导致提交失败:\t\t\t\t"],

Validate : function(theForm, mode){

var obj = theForm || event.srcElement;

var count = obj.elements.length;

this.ErrorMessage.length = 1;

this.ErrorItem.length = 1;

this.ErrorItem[0] = obj;

for(var i=0;i<count;i++){

with(obj.elements[i]){

var _dataType = getAttribute("dataType");

if(typeof(_dataType) == "object" || typeof(this[_dataType]) == "undefined")
continue;

this.ClearState(obj.elements[i]);

if(getAttribute("require") == "false" && value ==
"") continue;

switch(_dataType){

case "Date" :

case "Repeat" :

case "Range" :

case "Compare" :

case "Custom" :

case "Group" :

case "Limit" :

case "LimitB" :

case "SafeString" :

if(!eval(this[_dataType])) {

this.AddError(i, getAttribute("msg"));

}

break;

default :

if(!this[_dataType].test(value)){

this.AddError(i, getAttribute("msg"));

}

break;

}

}

}

if(this.ErrorMessage.length > 1){

mode = mode || 1;

var errCount = this.ErrorItem.length;

switch(mode){

case 2 :

for(var i=1;i<errCount;i++)

this.ErrorItem[i].style.color = "red";

case 1 :

alert(this.ErrorMessage.join("\n"));

this.ErrorItem[1].focus();

break;

case 3 :

for(var i=1;i<errCount;i++){

try{

var span = document.createElement("SPAN");

span.id = "__ErrorMessagePanel";

span.style.color = "red";

this.ErrorItem[i].parentNode.appendChild(span);

span.innerHTML = this.ErrorMessage[i].replace(/\d+:/,"*");

}

catch(e){alert(e.description);}

}

this.ErrorItem[1].focus();

break;

default :

alert(this.ErrorMessage.join("\n"));

break;

}

return false;

}

return true;

},

limit : function(len,min, max){

min = min || 0;

max = max || Number.MAX_VALUE;

return min <= len && len <= max;

},

LenB : function(str){

return str.replace(/[^\x00-\xff]/g,"**").length;

},

ClearState : function(elem){

with(elem){

if(style.color == "red")

style.color = "";

var lastNode = parentNode.childNodes[parentNode.childNodes.length-1];

if(lastNode.id == "__ErrorMessagePanel")

parentNode.removeChild(lastNode);

}

},

AddError : function(index, str){

this.ErrorItem[this.ErrorItem.length] = this.ErrorItem[0].elements[index];

this.ErrorMessage[this.ErrorMessage.length] = this.ErrorMessage.length + ":"
+ str;

},

Exec : function(op, reg){

return new RegExp(reg,"g").test(op);

},

compare : function(op1,operator,op2){

switch (operator) {

case "NotEqual":

return (op1 != op2);

case "GreaterThan":

return (op1 > op2);

case "GreaterThanEqual":

return (op1 >= op2);

case "LessThan":

return (op1 < op2);

case "LessThanEqual":

return (op1 <= op2);

default:

return (op1 == op2);

}

},

MustChecked : function(name, min, max){

var groups = document.getElementsByName(name);

var hasChecked = 0;

min = min || 1;

max = max || groups.length;

for(var i=groups.length-1;i>=0;i--)

if(groups[i].checked) hasChecked++;

return min <= hasChecked && hasChecked <= max;

},

IsDate : function(op, formatString){

formatString = formatString || "ymd";

var m, year, month, day;

switch(formatString){

case "ymd" :

m = op.match(new RegExp("^\\s*((\\d{4})|(\\d{2}))([-./])(\\d{1,2})\\4(\\d{1,2})\\s*$"));

if(m == null ) return false;

day = m[6];

month = m[5]--;

year = (m[2].length == 4) ? m[2] : GetFullYear(parseInt(m[3], 10));

break;

case "dmy" :

m = op.match(new RegExp("^\\s*(\\d{1,2})([-./])(\\d{1,2})\\2((\\d{4})|(\\d{2}))\\s*$"));

if(m == null ) return false;

day = m[1];

month = m[3]--;

year = (m[5].length == 4) ? m[5] : GetFullYear(parseInt(m[6], 10));

break;

default :

break;

}

var date = new Date(year, month, day);

return (typeof(date) == "object" && year == date.getFullYear()
&& month == date.getMonth() && day == date.getDate());

function GetFullYear(y){return ((y<30 ? "20" : "19") +
y)|0;}

}

}

</script>

分享到:
评论

相关推荐

    web表单验证程序

    非常强大而又完整的web表单验证程序,相信大家下载后不会吃亏的!

    一个非常强大完整的web表单验证程序Validator v1.05

    表单的验证一直是网页设计者头痛的问题,表单验证类 Validator就是为解决这个问题而写的,旨在使设计者从纷繁复杂的表单验证中解放出来,把精力集中于网页的设计和功能上的改进上。 Validator是基于JavaScript技术的...

    oqss在线表单引擎2.5版

    OQSS是智能的web表单引擎,专业的问卷调研调查软件,后台程序运行于web服务器,前台使用浏览器进行操作,同时也是在线的web表单开发引擎,是第一款国产开放式的问卷调查系统及表单引擎。使用OQSS:你可以用来制作、...

    ExtJSWeb应用程序开发指南(第2版)

    4.2.2 表单验证(VType) 4.2.3 自定义VType验证 4.3 表单的提交和加载 4.3.1 Ext.form.action.Action基础 4.3.2 Ajax模式的表单数据加载 4.3.3 Ajax模式的表单数据提交 4.3.4 标准模式的表单数据提交 4.3.5 ...

    基于 Python 编程语言的 Web 框架Django

    Django 是一个开放源代码的 Web 开发框架,是一个基于 Python 编程语言的 Web 框架,旨在帮助开发人员快速构建高质量、高效的 Web 应用程序。Django 提供了一整套工具和方法,使开发人员能够轻松地设计、开发和部署...

    03-python五子棋程序

    我们的项目是一个基于Python语言开发的应用程序,旨在帮助开发人员快速构建各种类型的应用。Python是一种简洁、易学且功能强大的语言,因此我们选择使用Python作为开发语言。 首先,Python具有简单易学的特点,使得...

    完整版《HTML5高级程序设计》2

    7.2.2 表单验证 147 7.2.3 验证反馈 151 7.3 构建HTML5 Forms应用 152 7.4 小结 157 第8章 Web Workers API 158 8.1 HTML5 Web Workers的浏览器支持情况 158 8.2 使用HTML5 Web Workers API 159 8.2.1 浏览器支持性...

    完整版《HTML5高级程序设计》4

    7.2.2 表单验证 147 7.2.3 验证反馈 151 7.3 构建HTML5 Forms应用 152 7.4 小结 157 第8章 Web Workers API 158 8.1 HTML5 Web Workers的浏览器支持情况 158 8.2 使用HTML5 Web Workers API 159 8.2.1 浏览器支持性...

    计算机网络安全web漏洞扫描工具

    行业最先进和最深入的SQL注入和跨站点脚本测试 强大的可视化功能使得测试网页表单和密 码变很容易 广泛的报告设施,包括签证的PCI遵守情况报告 多线程快速扫描,抓取数以十万计的网页,十分方便 智能扫描器检测...

    第三代移动WEB内核小程序风口-逐浪CMS2 x3.9.3全面发布

    ■扩展:优化了AJAX单文件上传组件,支持一个页面放置多个上传组件 ■增加:BIS模块 ■扩展:LED设计模块,支持动画等效果 ■修改:Boot4标签解析,增加font字体,基于逐浪字库的高端字体图标技术。 ■增加:Bis增加订单...

    OQSS 在线问卷调查系统 v5.0.rar

    OQSS是智能的web表单引擎,专业的问卷调研调查软件,后台程序运行于web服务器,前台使用浏览器进行操作,同时也是在线的web表单开发引擎,是第一款国产开放式的问卷调查系统及表单引擎。使用OQSS:你可以用来制作、...

    Web-Development-with-Django:学习使用基于Python的框架构建现代Web应用程序

    使用Django进行Web开发 ...开发实用的Web表单以添加功能,例如文件上传 开发与之通信的RESTful API和JavaScript代码 连接到PostgreSQL等数据库 相关讲习班和书籍 如果您发现此存储库有用,则可能需要查看我们的其他

    23-微信机器人程序.zip

    我们的项目是一个基于Python语言开发的应用程序,旨在帮助开发人员快速构建各种类型的应用。Python是一种简洁、易学且功能强大的语言,因此我们选择使用Python作为开发语言。 首先,Python具有简单易学的特点,使得...

    17-51商城程序.zip

    我们的项目是一个基于Python语言开发的应用程序,旨在帮助开发人员快速构建各种类型的应用。Python是一种简洁、易学且功能强大的语言,因此我们选择使用Python作为开发语言。 首先,Python具有简单易学的特点,使得...

    22-今天吃什么程序.zip

    我们的项目是一个基于Python语言开发的应用程序,旨在帮助开发人员快速构建各种类型的应用。Python是一种简洁、易学且功能强大的语言,因此我们选择使用Python作为开发语言。 首先,Python具有简单易学的特点,使得...

    21-看图猜成语程序.zip

    我们的项目是一个基于Python语言开发的应用程序,旨在帮助开发人员快速构建各种类型的应用。Python是一种简洁、易学且功能强大的语言,因此我们选择使用Python作为开发语言。 首先,Python具有简单易学的特点,使得...

    19-甜橙音乐网程序.zip

    我们的项目是一个基于Python语言开发的应用程序,旨在帮助开发人员快速构建各种类型的应用。Python是一种简洁、易学且功能强大的语言,因此我们选择使用Python作为开发语言。 首先,Python具有简单易学的特点,使得...

    JAVA中spring介绍以及个人使用心得

    Spring是一个轻量级的开源Java框架,它简化了企业级应用程序的开发。Spring框架提供了一系列的工具和库,可以帮助开发人员构建各种类型的应用程序,包括Web应用程序、企业...该框架支持RESTful风格的Web服务、表单验证

Global site tag (gtag.js) - Google Analytics