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 相关文章推荐
使用javascript过滤html的字符串(注释标记法)
Jul 08 Javascript
js获取IP和PcName(IE)在vs中可用
Aug 02 Javascript
Node调试工具JSHint的安装及配置教程
May 27 Javascript
利用React-router+Webpack快速构建react程序
Oct 27 Javascript
JS中用childNodes获取子元素换行会产生一个子元素
Dec 08 Javascript
jQuery实现6位数字密码输入框
Dec 29 Javascript
jquery加载单文件vue组件的方法
Jun 20 jQuery
浅谈Vue数据响应
Nov 05 Javascript
深入浅析golang zap 日志库使用(含文件切割、分级别存储和全局使用等)
Feb 19 Javascript
Node 模块原理与用法详解
May 13 Javascript
Vue+Element-U实现分页显示效果
Nov 15 Javascript
Node.js实现断点续传
Jun 23 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
十大“创意”战术!
2020/03/04 星际争霸
火车头discuz6.1 完美采集的php接口文件
2009/09/13 PHP
php设计模式 Singleton(单例模式)
2011/06/26 PHP
php生成图形验证码几种方法小结
2013/08/15 PHP
PHP中获取时间的下一周下个月的方法
2014/03/18 PHP
php去掉URL网址中带有PHPSESSID的配置方法
2014/07/08 PHP
php gd等比例缩放压缩图片函数
2016/06/12 PHP
PHP聚合式迭代器接口IteratorAggregate用法分析
2017/12/28 PHP
PHP+redis实现的购物车单例类示例
2019/02/02 PHP
javascript innerHTML、outerHTML、innerText、outerText的区别
2008/11/24 Javascript
javaScript实现可缩放的显示区效果代码
2015/10/26 Javascript
JS实现部分HTML固定页面顶部随屏滚动效果
2015/12/24 Javascript
初探nodeJS
2017/01/24 NodeJs
Angular2中监听数据更新的方法
2018/08/31 Javascript
vue如何限制只能输入正负数及小数
2019/07/04 Javascript
微信小程序wx.request拦截器使用详解
2019/07/09 Javascript
vue相同路由跳转强制刷新该路由组件操作
2020/08/05 Javascript
js实现简单的点名器随机色实例代码
2020/09/20 Javascript
python 写的一个爬虫程序源码
2016/02/28 Python
Python中Django 后台自定义表单控件
2017/03/28 Python
Python基于list的append和pop方法实现堆栈与队列功能示例
2017/07/24 Python
pyqt5 从本地选择图片 并显示在label上的实例
2019/06/13 Python
python实现字典嵌套列表取值
2019/12/16 Python
Pycharm如何导入python文件及解决报错问题
2020/05/10 Python
python实现移动木板小游戏
2020/10/09 Python
css3实现的多级渐变下拉菜单导航效果代码
2015/08/31 HTML / CSS
HTML5图片预览实例分享
2014/06/04 HTML / CSS
美国珠宝网上商店:Jeulia
2016/09/01 全球购物
莫斯科珠宝厂官方网站:Miuz
2020/09/19 全球购物
程序员经常用到的UNIX命令
2015/04/13 面试题
工地安全检查制度
2014/02/04 职场文书
供货协议书
2014/04/22 职场文书
学习党的群众路线剖析材料
2014/10/09 职场文书
母亲节寄语大全
2015/02/27 职场文书
2016大学生诚信考试承诺书
2016/03/25 职场文书
Mysql中where与on的区别及何时使用详析
2021/08/04 MySQL