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 20 Javascript
基于jQuery的公告无限循环滚动实现代码
May 11 Javascript
JavaScript使用setTimeout实现延迟弹出警告框的方法
Apr 07 Javascript
微信小程序开发之大转盘 仿天猫超市抽奖实例
Dec 08 Javascript
jQuery实现两列等高并自适应高度
Dec 22 Javascript
Vue表单验证插件的制作过程
Apr 01 Javascript
详解A标签中href=&quot;&quot;的几种用法
Aug 20 Javascript
详解如何webpack使用DllPlugin
Sep 30 Javascript
vue 中 命名视图的用法实例详解
Aug 14 Javascript
Vue切换组件实现返回后不重置数据,保留历史设置操作
Jul 21 Javascript
vue 插槽简介及使用示例
Nov 19 Vue.js
JavaScript流程控制(循环)
Dec 06 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 加密解密内部算法
2010/04/22 PHP
探讨如何使用SimpleXML函数来加载和解析XML文档
2013/06/07 PHP
8个必备的PHP功能开发
2015/10/02 PHP
PHP 数组基本操作小结(推荐)
2016/06/13 PHP
PHP 进度条函数的简单实例
2017/09/19 PHP
解决在laravel中leftjoin带条件查询没有返回右表为NULL的问题
2019/10/15 PHP
常见JS效果之图片减速度滚动实现代码
2011/12/08 Javascript
jQuery动态地获取系统时间实现代码
2013/05/24 Javascript
原生JavaScript实现连连看游戏(附源码)
2013/11/05 Javascript
node.js中的path.sep方法使用说明
2014/12/08 Javascript
javascript实现无限级select联动菜单
2015/01/02 Javascript
Javascript实现商品秒杀倒计时(时间与服务器时间同步)
2015/09/16 Javascript
vue.js获取数据库数据实例代码
2017/05/26 Javascript
javascript基本常用排序算法解析
2017/09/27 Javascript
vue.js的vue-cli脚手架中使用百度地图API的实例
2019/01/21 Javascript
Vue实现页面添加水印功能
2019/11/09 Javascript
Vue实现商品飞入购物车效果(电商项目)
2019/11/26 Javascript
JQuery使用数组遍历跳出each循环
2020/09/01 jQuery
[05:40]DOTA2荣耀之路6:Wings最后进攻
2018/05/30 DOTA
[33:17]OG vs VGJ.T 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python中的字典遍历备忘
2015/01/17 Python
Python定义一个跨越多行的字符串的多种方法小结
2018/07/19 Python
对python中的*args与**kwgs的含义与作用详解
2019/08/28 Python
HTML5之HTML元素扩展(下)—增强的Form表单元素值得关注
2013/01/31 HTML / CSS
美国礼品卡交易网站:Cardpool
2018/08/27 全球购物
北京捷通华声语音技术有限公司Java软件工程师笔试题
2012/04/10 面试题
信息专业本科生个人的自我评价
2013/10/28 职场文书
仓库主管的岗位职责
2013/12/04 职场文书
环境工程专业自荐信范文
2014/06/24 职场文书
电话客服专员岗位职责
2014/06/28 职场文书
医德医风自我评价2015
2015/03/03 职场文书
2015年度房地产工作总结
2015/04/09 职场文书
幼儿园大班开学寄语(2015秋季)
2015/05/27 职场文书
护理工作心得体会
2016/01/22 职场文书
高中政治教师教学反思
2016/02/23 职场文书
本地通过nginx配置反向代理的全过程记录
2021/03/31 Servers