Jquery 表单验证类介绍与实例


Posted in Javascript onJune 09, 2013

[html]

<form action="" method="post" id="formValidate"> 
数值:<input name="" type="text" validate="number" /><span></span><br/> 
浮点型:<input name="" type="text" validate="decimal" /><span></span><br/> 
英文:<input name="" type="text" validate="english" /><span></span><br/> 
大写英文:<input name="" type="text" validate="upper_english" /><span></span><br/> 
小写英文:<input name="" type="text" validate="lower_english" /><span></span><br/> 
邮件格式:<input name="" type="text" validate="email" /><span></span><br/> 
是否包含中文:<input name="" type="text" validate="chinese" /><span></span><br/> 
URL:<input name="" type="text" validate="url" /><span></span><br/> 
电话号码:<input name="" type="text" validate="phone" /><span></span><br/> 
IP地址:<input name="" type="text" validate="ip" /><span></span><br/> 
金额:<input name="" type="text" validate="money" /><span></span><br/> 
数值或者英文或者_:<input name="" type="text" validate="number_letter" /><span></span><br/> 
邮政编码:<input name="" type="text" validate="zip_code" /><span></span><br/> 
可用账号:<input name="" type="text" validate="account" /><span></span><br/> 
QQ:<input name="" type="text" validate="qq" /><span></span><br/> 
身份证:<input name="" type="text" validate="card" /><span></span><br/> 
数值 允许为空:<input name="" type="text" validate="number" empty='yes' /><span></span><br/> 
数值 长度 1-3:<input name="" type="text" validate="number" min=1 max=3 /><span></span><br/> 
数值 长度 1-3 允许为空:<input name="" type="text" validate="number" min=1 max=3 empty='yes'/><span></span><br/> 
<input name="" type="submit" /> 
</form> 
<script src="jquery.js" type="text/javascript"></script> 
<script src="formValidate.js" type="text/javascript"></script> 
<script type="text/javascript"> 
var formValidate = new formValidate(); 
formValidate.init({}); 
</script>

[javascript]
/* 
* 通用JS验证类 
* 使用方法: 
* var formValidate = new formValidate(); 
* formValidate.init({}); 
* 注意: 
* <form action="" method="post" id="formValidate"> 
* id为formValidate 
* 
* <input name="" type="text" validate="zip_code" empty="yes" min=10 max=10 /><span></span> 
* validate="zip_code" 验证是否是邮政编码 
* empty="yes" 验证是否允许为空 
* min=10 最小长度 
* max=10 最大长度 
* <span></span> 显示提示内容 
*/ 
var formValidate = function () { var _this = this; 
this.options = { 
number : {reg : /^[0-9]+$/, str : '必须为数字'}, 
decimal : {reg : /^[-]{0,1}(\d+)[\.]+(\d+)$/ , str : '必须为DECIMAL格式'}, 
english : {reg : /^[A-Za-z]+$/, str : '必须为英文字母'}, 
upper_english : {reg : /^[A-Z]+$/, str : '必须为大写英文字母'}, 
lower_english : {reg : /^[a-z]+$/, str : '必须为小写英文字母'}, 
email : {reg : /^([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+\.[a-zA-Z]{2,3}$/, str : 'Email格式不正确'}, 
chinese : {reg : /[\u4E00-\u9FA5\uf900-\ufa2d]/ig, str : '必须含有中文'}, 
url : {reg : /^[a-zA-z]+:\/\/[^s]*/, str : 'URL格式不正确'}, 
phone : {reg : /^[1][3][0-9]{9}$/ , str : '电话号码格式不正确'}, 
ip : {reg : /^(\d+)\.(\d+)\.(\d+)\.(\d+)$/ , str : 'IP地址格式不正确'}, 
money : {reg : /^[0-9]+[\.][0-9]{0,3}$/ , str : '金额格式不正确'}, 
number_letter : {reg : /^[0-9a-zA-Z\_]+$/ , str : '只允许输入英文字母、数字、_'}, 
zip_code : {reg : /^[a-zA-Z0-9 ]{3,12}$/ , str : '邮政编码格式不正确'}, 
account : {reg : /^[a-zA-Z][a-zA-Z0-9_]{4,15}$/ , str : '账号名不合法,允许5-16字符,字母下划线和数字'}, 
qq : {reg : /[1-9][0-9]{4,}/ , str : 'QQ账号不正确'}, 
card : {reg : /^(\d{6})(18|19|20)?(\d{2})([01]\d)([0123]\d)(\d{3})(\d|X)?$/ , str : '身份证号码不正确'}, 
}; 
//初始化 绑定表单 选项 
this.init = function (options) { 
this.setOptions(options); 
this.checkForm(); 
}; 
//设置参数 
this.setOptions = function (options) { 
for (var key in options) { 
if (key in this.options) { 
this.options[key] = options[key]; 
} 
} 
}; 
//检测表单 包括是否为空,最大值 最小值,正则验证 
this.checkForm = function () { 
$("#formValidate").submit(function () { 
var formChind = $("#formValidate").children(); 
var testResult = true; 
formChind.each(function (i) { 
var child = formChind.eq(i); 
var value = child.val(); 
var len = value.length; 
var childSpan = child.next(); 
//属性中是否为空的情况 
if (child.attr('empty')) { 
if (child.attr('empty') == 'yes' && value == '') { 
if (childSpan) { 
childSpan.html(''); 
} 
return; 
} 
} 
//属性中min 和 max 最大和最小长度 
var min = null; 
var max = null; 
if (child.attr('min')) min = child.attr('min'); 
if (child.attr('max')) max = child.attr('max'); 
if (min && max) { 
if (len < min || len > max) { 
if (childSpan) { 
childSpan.html(''); 
childSpan.html(' 字符串长度在' + min + '与' + max + '之间'); 
testResult = false; 
return; 
} 
} 
} else if (min) { 
if (len < min) { 
if (childSpan) { 
childSpan.html(''); 
childSpan.html(' 字符串长度应大于' + min); 
testResult = false; 
return; 
} 
} 
} else if (max) { 
if (len > max) { 
if (childSpan) { 
childSpan.html(''); 
childSpan.html(' 字符串长度应小于' + max); 
testResult = false; 
return; 
} 
} 
} 
//正则校验 
if (child.attr('validate')) { 
var type = child.attr('validate'); 
var result = _this.check(value, type); 
if (childSpan) { 
childSpan.html(''); 
if (result != true) { 
childSpan.html(' ' + result); 
testResult = false; 
} 
} 
} 
}); 
return testResult; 
}); 
}; 
//检测单个正则选项 
this.check = function (value, type) { 
if (this.options[type]) { 
var val = this.options[type]['reg']; 
if (!val.test(value)) { 
return this.options[type]['str']; 
} 
return true; 
} else { 
return '找不到该表单验证正则项'; 
} 
}; 

}
Javascript 相关文章推荐
javascript 系统文件夹文件操作及参数介绍
Jan 08 Javascript
JS实现模仿微博发布效果实例代码
Dec 16 Javascript
Node.js模拟浏览器文件上传示例
Mar 26 Javascript
JavaScript实现Java中StringBuffer的方法
Feb 09 Javascript
javascript实现延时显示提示框特效代码
Apr 27 Javascript
JavaScript手机振动API
Jun 11 Javascript
JavaScript ES6的新特性使用新方法定义Class
Jun 28 Javascript
Node.js 8 中的重要新特性
Jun 28 Javascript
JS实现提交表单前的数字及邮箱校检功能
Nov 13 Javascript
新版vue-cli模板下本地开发环境使用node服务器跨域的方法
Apr 03 Javascript
JavaScript中join()、splice()、slice()和split()函数用法示例
Aug 24 Javascript
原生js添加一个或多个类名的方法分析
Jul 30 Javascript
js调用后台servlet方法实例
Jun 09 #Javascript
Jquery实现列表(隔行换色,全选,鼠标滑过当前行)效果实例
Jun 09 #Javascript
Jquery加载时从后台读取数据绑定到dropdownList实例
Jun 09 #Javascript
ScrollDown的基本操作示例
Jun 09 #Javascript
给Flash加一个超链接(推荐使用透明层)兼容主流浏览器
Jun 09 #Javascript
一个简单的弹性返回顶部JS代码实现介绍
Jun 09 #Javascript
select、radio表单回显功能实现避免使用jquery载入赋值
Jun 08 #Javascript
You might like
德生PL330测评
2021/03/02 无线电
php is_file()和is_dir()用于遍历目录时用法注意事项
2010/03/02 PHP
php数组函数序列之array_push() 数组尾部添加一个或多个元素(入栈),返回新长度。
2011/11/07 PHP
php生成二维码的几种方式整理及使用实例
2013/06/03 PHP
探讨方法的重写(覆载)详解
2013/06/08 PHP
php获取微信共享收货地址的方法
2017/12/21 PHP
PHP针对redis常用操作实例详解
2019/08/17 PHP
JQUERY 对象与DOM对象之两者相互间的转换
2009/04/27 Javascript
javascript 按回车键相应按钮提交事件
2009/11/02 Javascript
JS俄罗斯方块,包含完整的设计理念
2010/12/11 Javascript
对xmlHttp对象方法和属性的理解
2011/01/17 Javascript
JQuery1.6 使用方法三
2011/11/23 Javascript
基于jQuery实现的图片切换焦点图整理
2014/12/07 Javascript
浅谈EasyUI常用控件的禁用方法
2016/11/09 Javascript
详解前后端分离之VueJS前端
2017/05/24 Javascript
angularjs定时任务的设置与清除示例
2017/06/02 Javascript
vue 父组件调用子组件方法及事件
2018/03/29 Javascript
Vue实现侧边菜单栏手风琴效果实例代码
2018/05/31 Javascript
JS实现统计字符串中字符出现个数及最大个数功能示例
2018/06/04 Javascript
深入理解Vue父子组件生命周期执行顺序及钩子函数
2018/08/12 Javascript
Vue中实现权限控制的方法示例
2019/06/07 Javascript
详解Vue3 Teleport 的实践及原理
2020/12/02 Vue.js
跟老齐学Python之集成开发环境(IDE)
2014/09/12 Python
Python发送http请求解析返回json的实例
2018/03/26 Python
python-docx文件定位读取过程(尝试替换)
2020/02/13 Python
Python如何读写CSV文件
2020/08/13 Python
用HTML5制作烟火效果的教程
2015/05/12 HTML / CSS
StringBuilder和String的区别
2015/05/18 面试题
高中毕业生自我鉴定例文
2013/12/29 职场文书
工商干部先进事迹
2014/05/14 职场文书
四风问题民主生活会对照检查材料思想汇报
2014/09/27 职场文书
党员“四风”问题批评与自我批评思想汇报
2014/10/06 职场文书
防汛工作情况汇报
2014/10/28 职场文书
法定代表人证明书
2014/11/28 职场文书
个人工作年终总结
2015/03/09 职场文书
Win11 KB5015814遇安装失败 影响开始菜单性能解决方法
2022/07/15 数码科技