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 相关文章推荐
JS 字符串连接[性能比较]
May 10 Javascript
event.currentTarget与event.target的区别介绍
Dec 31 Javascript
jquery提交form表单时禁止重复提交的方法
Feb 13 Javascript
基于Flowplayer打造一款免费的WEB视频播放器附源码
Sep 06 Javascript
Vue实现自带的过滤器实例
Mar 09 Javascript
详解RequireJs官方使用教程
Oct 31 Javascript
node.js将MongoDB数据同步到MySQL的步骤
Dec 10 Javascript
JavaScript基于数组实现的栈与队列操作示例
Dec 22 Javascript
js尾调用优化的实现
May 23 Javascript
ES6 Proxy实现Vue的变化检测问题
Jun 11 Javascript
javascript随机变色实例代码
Oct 15 Javascript
如何基于JavaScript判断图片是否加载完成
Dec 28 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
开源SNS系统-ThinkSNS
2008/05/18 PHP
php中文乱码怎么办如何让浏览器自动识别utf-8
2014/01/15 PHP
PHP实现采集抓取淘宝网单个商品信息
2015/01/08 PHP
php实现通用的从数据库表读取数据到数组的函数实例
2015/03/21 PHP
如何使用GDB调试PHP程序
2015/12/08 PHP
centos 7.2下搭建LNMP环境教程
2016/11/20 PHP
php输出含有“#”字符串的方法
2017/01/18 PHP
iis 7下安装laravel 5.4环境的方法教程
2017/06/14 PHP
最新的10款jQuery内容滑块插件分享
2011/09/18 Javascript
jQuery实现给页面换肤的方法
2015/05/30 Javascript
Javascript使用post方法提交数据实例
2015/08/03 Javascript
javascript实现自动输出文本(打字特效)
2015/08/27 Javascript
jQuery图片渐变特效的简单实现
2016/06/25 Javascript
jQuery仿京东商城楼梯式导航定位菜单
2016/07/25 Javascript
快速解决js中window.location.href不工作的问题
2016/11/02 Javascript
NodeJS中的MongoDB快速入门详细教程
2016/11/11 NodeJs
jquery pagination插件动态分页实例(Bootstrap分页)
2016/12/23 Javascript
JS对象创建的几种方式整理
2017/02/28 Javascript
JS实现的类似微信聊天效果示例
2019/01/29 Javascript
JavaScript实现身份证验证代码实例
2019/08/26 Javascript
Vue项目中使用flow做类型检测的方法
2020/03/18 Javascript
Postman参数化实现过程及原理解析
2020/08/13 Javascript
在vue中使用Echarts画曲线图的示例
2020/10/03 Javascript
Python爬取网易云音乐上评论火爆的歌曲
2017/01/19 Python
Windows下anaconda安装第三方包的方法小结(tensorflow、gensim为例)
2018/04/05 Python
python爬虫模拟浏览器的两种方法实例分析
2019/12/09 Python
Python logging自定义字段输出及打印颜色
2020/11/30 Python
使用phonegap进行本地存储的实现方法
2017/03/31 HTML / CSS
加拿大著名时装品牌:SOIA & KYO
2016/08/23 全球购物
马来西亚网上购物:Youbeli
2018/03/30 全球购物
美国气象仪器、花园装饰和墙壁艺术商店:Wind & Weather
2019/05/29 全球购物
党支部书记岗位责任制
2014/02/11 职场文书
地理教师岗位职责
2014/03/16 职场文书
个人欠款担保书
2014/05/20 职场文书
Python入门之使用pandas分析excel数据
2021/05/12 Python
如何创建一个创建MySQL数据库中的datetime类型
2022/03/21 MySQL