jquery插件制作 表单验证实现代码


Posted in Javascript onAugust 17, 2012

先下页面代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<title></title> 
<script type="text/javascript" src="Scripts/jquery-1.8.0.min.js"></script> 
<script type="text/javascript" src="Scripts/jquery.formCheck.js"></script> 
<script type="text/javascript"> 
$(document).ready(function () { 
$('.formToCheck').formCheck(); 
}); 
</script> 
<style type="text/css"> 
form 
{ 
width: 300px; 
} 
label 
{ 
position: absolute; 
} 
input:not(.submit), textarea 
{ 
margin-left: 100px; 
width: 200px; 
} 
.submit 
{ 
margin-left: 100px; 
} 
.error 
{ 
border:1px solid red; 
} 
</style> 
</head> 
<body> 
<form class="formToCheck" id="formToCheck" method="get" action="#"> 
<fieldset> 
<legend>a simple form</legend> 
<p> 
<label for="fname"> 
* first name</label> 
<input id="fname" class="required" name="fname" /> 
</p> 
<p> 
<label for="lname"> 
last name</label> 
<input id="lname" name="lname" /> 
</p> 
<p> 
<label for="email"> 
* email</label> 
<input id="email" name="email" class="required email" /> 
</p> 
<p> 
<label for="comment"> 
* comment</label> 
<input id="comment" name="comment" class="required" /> 
</p> 
<p> 
<label for="email"> 
* email</label> 
<input id="submit" type="submit" class="submit" value="submit" /> 
</p> 
</fieldset> 
</form> 
</body> 
</html>

我们定义了一个form,定义了几个输入框,请注意class属性,有的是class="required",说明该项是必填项;class="required email"说明该项是必填项,并且需要符合email格式。没有定义class的输入框不做验证。下面来看插件代码:
(function ($) { 
$.fn.formCheck = function (options) { 
var defaults = { 
errorClass: 'error' 
}; 
var options = $.extend(defaults, options); 
return this.each(function () { 
var form = $(this); 
//如果不是from表单,直接返回不做任何操作 
if (!form.is('form')) { 
return; 
} 
//只有当form表单提交的时候,我们才做验证 
form.submit(function () { 
var errorFlag = false; 
//获取表单里面所有的input控件,逐一进行处理 
$(':input', this).each(function (index, item) { 
//获取当前对象 
var element = $(item); 
//移除样式 
element.removeClass(options.errorClass); 
//必填项验证,value值不能为空 
if (element.hasClass('required') && element.val().length == 0) { 
errorFlag = true; 
element.addClass(options.errorClass); 
} 
//数字验证 
if (element.hasClass('number') && element.val().length > 0 && !/^\d+$/.test(element.val())) { 
errorFlag = true; 
element.addClass(options.errorClass); 
} 
//email验证 
if (element.hasClass('email') && element.val().length > 0 







&& !/^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/.test(element.val())) { 
errorFlag = true; 
element.addClass(options.errorClass); 
} 
//验证数字长度 
var num = this.className.match(/min(\d+)/i); 
if (num && element.val().length < num[1]) { 
errorFlag = true; 
element.addClass(options.errorClass); 
} 
}); 
return !errorFlag; 
}); 
}); 
}; 
})(jQuery);

demo下载地址:jQuery.plugin.formcheck
今天的课程就到此为止了。
Javascript 相关文章推荐
从零开始学习jQuery (二) 万能的选择器
Oct 01 Javascript
JavaScript中的私有/静态属性介绍
Jul 26 Javascript
javascript操作css属性
Dec 30 Javascript
jQuery支持动态参数将函数绑定到事件上的方法
Mar 17 Javascript
JS组件Bootstrap ContextMenu右键菜单使用方法
Apr 17 Javascript
JavaScript调试之console.log调试的一个小技巧分享
Aug 07 Javascript
使用react实现手机号的数据同步显示功能的示例代码
Apr 03 Javascript
vue axios 简单封装以及思考
Oct 09 Javascript
小程序实现图片移动缩放效果
May 26 Javascript
原生JavaScript写出Tabs标签页的实例代码
Jul 20 Javascript
Element Alert警告的具体使用方法
Jul 27 Javascript
node.js基础知识汇总
Aug 25 Javascript
jquery插件制作 图片走廊 gallery
Aug 17 #Javascript
jquery插件制作教程 txtHover
Aug 17 #Javascript
IFrame跨域高度自适应实现代码
Aug 16 #Javascript
JSONP 跨域共享信息
Aug 16 #Javascript
js自执行函数的几种不同写法的比较
Aug 16 #Javascript
js三种排序算法分享
Aug 16 #Javascript
jQuery点击后一组图片左右滑动的实现代码
Aug 16 #Javascript
You might like
PHP伪静态写法附代码
2008/06/20 PHP
php字符串过滤strip_tags()函数用法实例分析
2019/06/24 PHP
JS重要知识点小结
2011/11/06 Javascript
$.each与$().each的区别示例介绍
2014/03/20 Javascript
详解JavaScript for循环中发送AJAX请求问题
2020/06/23 Javascript
javascript解决小数的加减乘除精度丢失的方案
2016/05/31 Javascript
AngularJS的ng Http Request与response格式转换方法
2016/11/07 Javascript
JS定时检测任务任务完成后执行下一步的解决办法
2016/12/22 Javascript
gulp加批处理(.bat)实现ng多应用一键自动化构建
2017/02/16 Javascript
vue2.0嵌套路由实现豆瓣电影分页功能(附demo)
2017/03/13 Javascript
layui监听select变化,以及设置radio选中的方法
2019/09/24 Javascript
element-ui中dialog弹窗关闭按钮失效的解决
2020/09/22 Javascript
一文秒懂nodejs中的异步编程
2021/01/28 NodeJs
[01:44]《为梦想出发》—联想杯DOTA2完美世界全国高校联赛
2015/09/30 DOTA
[01:06] DOTA2英雄背景故事第三期之秩序法则光之守卫
2020/07/07 DOTA
在Django中管理Users和Permissions以及Groups的方法
2015/07/23 Python
Python实用技巧之列表、字典、集合中根据条件筛选数据详解
2018/07/11 Python
Python Flask前后端Ajax交互的方法示例
2018/07/31 Python
python实现反转部分单向链表
2018/09/27 Python
Python matplotlib通过plt.scatter画空心圆标记出特定的点方法
2018/12/13 Python
用python实现刷点击率的示例代码
2019/02/21 Python
Python绘制堆叠柱状图的实例
2019/07/09 Python
python编写猜数字小游戏
2019/10/06 Python
python中with语句结合上下文管理器操作详解
2019/12/19 Python
如何解决pycharm调试报错的问题
2020/08/06 Python
anaconda安装pytorch1.7.1和torchvision0.8.2的方法(亲测可用)
2021/02/01 Python
HTML5 LocalStorage 本地存储刷新值还在
2017/03/10 HTML / CSS
海滩咖啡馆:Beach Cafe
2018/02/02 全球购物
HolidayLettings英国:预订最好的度假公寓、别墅和自助式住宿
2019/08/27 全球购物
PHP经典面试题
2016/09/03 面试题
Linux面试题LINUX系统类
2015/11/25 面试题
通信工程专业女生个人求职信
2013/09/21 职场文书
放飞梦想演讲稿600字
2014/08/26 职场文书
公务员党的群众路线教育实践活动学习心得体会
2014/10/30 职场文书
2015年信息宣传工作总结
2015/05/26 职场文书
详解ZABBIX监控ESXI主机的问题
2022/06/21 Servers