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

jQuery Validate 表单验证插件 一、jQuery Validate 插件的介绍 jQuery Validate 插件为表单提供了强大的验证功能,让客户端表单验证变得更简单,同时提供了大量的定制选项,满足应用程序各种需求。该插件捆绑了一套有用的验证方法,包括 URL 和电子邮件验证,同时提供了一个用来编写用户自定义方法的 API。所有的捆绑方法默认使用英语作为错误信息,且已翻译成其他 37 种语言。 该插件是由 Jörn Zaefferer 编写和维护的,他是 jQuery 团队的一名成员,是 jQuery UI 团队的主要开发人员,. 阅读详情
Validator目前可实现的验证类型有:   1.是否为空;   2.中文字符;   3.双字节字符   4.英文;   5.数字;   6.整数;   7.实数;   8.Email地址;   9.使用HTTP协议的网址;   10.电话号码;   11.货币;   12.手机号码;   13.邮政编码;   14.身份证号码;   15.QQ号码;   16.日期;   17.符合安全规则的密码;   18.某项的重复值;   19.两数的关系比较;   20.判断输入值是否在(n, m)区间;   21.输入字符长度限制(可按字节比较);   22.对于具有相同名称的单选按钮的选中判断;   23.限制具有相同名称的多选按钮的选中数目;   24.自定义的正则表达式验证;   运行环境(客户端):   在Windows Server 2003下用IE6.0+SP1和Mozilla Firefox 1.0测试通过;   在Lunix RedHat 9下的Netscape测试通过; Validator 完整代码: <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>
Laravel表单验证:构建安全的Web应用基石 开发者可以定义自己的验证规则来满足特定的验证需求。// 注册自定义规则// 验证逻辑...});// 使用自定义规则]); 阅读详情

相关推荐

Spring Boot 表单验证

表单验证是指在用户提交表单数据之前,对数据进行检查,确保其符合预期的格式和规则。例如,检查邮箱地址是否有效、密码是否符合长度要求、必填字段是否为空等。通过表单验证,可以提高数据的质量,增强应用程序的安全性。有时候,内置的验证注解不能满足我们的需求,我们可以创建自定义验证器。例如,我们可以创建一个自定义验证器,验证用户名是否已被使用。String message() default "用户名已被使用";Class

私聊前往站内信:https://i.youkuaiyun.com/#/msg/chat/weixin_44976692 1万+

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

  Validator 完整代码: 表单验证类 Validator v1.0body,td{font:normal 12px Verdana;color:#333333}input,textarea,select,td{font:normal 12px Verdana;color:#333333;border:1px solid #999999;background

龙的天空 1409

掌握Bootstrap表单验证的完整指南

常见的表单验证规则类型包括但不限于以下几种:必填验证(required):确保用户填写了所有必要的字段。格式验证(pattern):检查字段内容是否符合特定的格式要求,比如电子邮件地址或电话号码。长度验证(minlength, maxlength):限制字段内容的字符长度。数值验证(min, max):限制输入的数字大小范围。选择验证(enum, radio, checkbox):确保用户从预定义的选项中做出选择。

weixin_42609225的博客 1120

ReactPy中的表单验证完整指南:使用Yup构建强大验证模式

ReactPy是一个创新的Python库,它让开发者能够使用Python编写React风格的组件。在前端开发中,表单验证是确保数据完整性和用户体验的关键环节。本文将为您详细介绍如何在ReactPy中实现高效的表单验证,特别是通过集成Yup验证库来构建强大且可维护的验证模式。🚀 ## 为什么表单验证如此重要? 在Web应用中,表单是用户与系统交互的主要方式。有效的表单验证能够: - **防止

gitblog_00465的博客 630

掌握jQuery实现表单验证

本文还有配套的精品资源,点击获取 简介:表单验证是网页开发的关键环节,确保用户输入数据的准确性和格式正确性。jQuery提供了一套简单的API来进行前端表单验证,通过编写JavaScript代码来检查用户输入的有效性。本教程将介绍jQuery基础、自定义验证逻辑以及如何使用jQuery Validation Plugin来简化验证流程。学员将学习如何为表单添加验证规则、处理...

weixin_34618526的博客 1279

基于JSP与Servlet的Web表单验证项目实战

通过将验证规则集中存储在文本文件中,并在运行时动态加载,可以显著提高验证逻辑的可维护性和灵活性。同时,前后端协同验证、规则共享的设计模式,也有助于构建统一、可扩展的验证系统。

weixin_28895791的博客 786

Blazor-Validation:为Blazor表单验证提供强大支持

Blazor-Validation:为Blazor表单验证提供强大支持 项目介绍 Blazor-Validation 是一个专为 Microsoft aspdotnet Blazor 项目 设计的表单验证库。它不仅支持多种验证方式,还提供了灵活的配置选项,使得开发者能够轻松地在 Blazor 应用中实现表单验证功能。无论你是使用 DataAnnotations 还是 FluentValidatio...

gitblog_00038的博客 1083

国央企创新负责人如何通过平台实现科研成果的快速识别与转化?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

Nuxt Validate:为Nuxt.js项目提供强大的表单验证

Nuxt Validate:为Nuxt.js项目提供强大的表单验证 项目介绍 在现代Web开发中,表单验证是不可或缺的一部分。无论是用户注册、登录,还是提交表单数据,都需要确保数据的准确性和完整性。Nuxt Validate 是一个专为 Nuxt.js 项目设计的验证模块,它基于 Vee-Validate 构建,为开发者提供了一套简单易用的表单验证解决方案。 Nuxt Validate 不仅支持多...

gitblog_00936的博客 706

工业4.0 底层逻辑

工业4.0 的概念已经被滥用了,它与物联网,工业物联网等概念一样,几乎什么都往里面装。演变成了一句口号和愿景。许多人并不清楚工业4.0的底层逻辑到底是什么?如何遵循工业4.0 的思想构建新一代智能制造系统?并没用清晰地展示工业4.0的技术路线图。

姚家湾博客 1993

EMGPro 肌肉电手势识别手环传感器

EMG手势识别技术需要进行多方面的工作,包括传感器的设计和布局、EMG信号的采集和预处理、特征提取和分类等。通过对采集到的信号进行特征提取和分类,可以将手势信号与预定义的手势模型进行匹配,从而实现手势识别和控制。通过使用EMG手势识别技术,用户可以更加自由地操纵设备,使得我们的交互方式更加智能和自然。EMG手势识别是利用EMG信号测量肌肉运动的实时性和高精度性,采用机器学习等技术进行数据处理和分析,并将其应用于手势识别领域的一种技术。

m0_68593468的博客 1387

JavaScript表单验证

JavaScript表单验证是确保Web应用程序数据完整性和安全性的关键步骤。通过掌握常见的验证方法、灵活应用正则表达式以及关注用户体验,我们可以构建出既强大又易于使用的表单验证系统。随着Web技术的不断发展,我们还可以结合HTML5的内置验证功能、CSS样式以及第三方验证库来进一步提升验证效果和用户体验。虽然前端验证对于提升用户体验至关重要,但它并不能替代后端验证。前端验证的主要目的是提供即时反馈并减少不必要的服务器请求,而后端验证则是确保数据完整性和安全性的最后一道防线。

Python老吕的博客 1441

如何在OBS中添加实时时间戳:Lua脚本配置教程(附效果展示)

本文详细介绍了如何在OBS中通过Lua脚本配置实时时间戳功能,包括环境准备、脚本获取、安装配置及高级定制。适用于直播和视频录制场景,提供精准回溯和风格自定义,支持多平台适配和性能优化,是专业制作的必备技巧。

day7的博客 1044

探索form-validation.js:一款强大的表单验证库

探索form-validation.js:一款强大的表单验证库 在现代Web开发中,表单验证是不可或缺的一部分。无论是用户注册、登录还是数据提交,一个高效且易于使用的表单验证库可以极大地提升开发效率和用户体验。今天,我们将介绍一款名为form-validation.js的开源项目,它以其强大的功能和简洁的API设计,成为了开发者们的首选。 项目介绍 form-validation.js是一款基于J...

gitblog_01155的博客 499

实测对比:DINOv2、CLIP、ResNet在图像相似度任务上谁更强?(含Python代码与避坑指南)

本文通过实测对比DINOv2、CLIP和ResNet在图像相似度任务中的表现,提供Python代码实现与避坑指南。实验结果显示,DINOv2在精度上表现最佳,CLIP在多模态场景中优势明显,而ResNet则在计算效率上更优。文章还针对不同业务场景给出了具体选型建议,帮助开发者在图像搜索和版权检测等项目中做出更明智的技术决策。

weixin_30588381的博客 286

别再被骚扰了!手把手教你彻底卸载阿里云盾(安骑士)并封禁其IP段

本文详细指导如何彻底卸载阿里云盾(安骑士)并封禁其IP段,帮助用户夺回服务器控制权。从识别监控组件到执行官方卸载脚本,再到手动清理残留文件和配置iptables规则,确保完全阻断云盾通信。适用于追求极致性能或需要完全自主控制的环境。

weixin_42525551的博客 451

JS学习——表单验证

JS(JavaScript),最先听到的时候以为是和java一样,必须要学的,但是后来接触到后,才发现是不一样的,JS一种属于网络的高级脚本语言,已经被广泛用于Web应用开发,常用来为网页添加各式各样的动态功能,为用户提供更流畅美观的浏览效果(来源百度百科)。 本文主要是讲将JS如何嵌入HTML中实现表单的验证,会简单介绍下HTML、CSS、JS的内容,以及正则表达式,由于笔者还是个初学者,所以不会很深入,很多地方也是有点模糊不清,不对之处,还望多多指教,觉得不错还请点个赞! 互联网的三大基石 URL(

weixin_51963604的博客 4357

基于FPGA的 SelectIO IP核 的仿真验证-----( LVDS差分高速传输)

SelectIO IP核 的仿真验证

qq_43618170的博客 1万+
上一篇: CFM 的数据库查询
下一篇: 用VBScript实现对Windows注册表的修改
frankrade
博客等级 码龄19年 23粉丝 35原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值