jquery实现表单验证简单实例演示

/*

描述:基于jquery的表单验证插件。

*/

(function ($) {

$.fn.checkForm = function (options) {

var root = this; //将当前应用对象存入root

var isok = false; //控制表单提交的开关

var pwd1; //密码存储

var defaults = {

//图片路径

img_error: "img/error.gif",

img_success: "img/success.gif",

//提示信息

tips_success: ‘‘, //验证成功时的提示信息,默认为空

tips_required: ‘不能为空‘,

tips_email: ‘邮箱地址格式有误‘,

tips_num: ‘请填写数字‘,

tips_chinese: ‘请填写中文‘,

tips_mobile: ‘手机号码格式有误‘,

tips_idcard: ‘身份证号码格式有误‘,

tips_pwdequal: ‘两次密码不一致‘,

//正则

reg_email: /^\w+\@[a-zA-Z0-9]+\.[a-zA-Z]{2,4}$/i, //验证邮箱

reg_num: /^\d+$/, //验证数字

reg_chinese: /^[\u4E00-\u9FA5]+$/, //验证中文

reg_mobile: /^1[3458]{1}[0-9]{9}$/, //验证手机

reg_idcard: /^\d{14}\d{3}?\w$/ //验证身份证

};

//不为空则合并参数

if(options)

$.extend(defaults, options);

//获取(文本框,密码框,多行文本框),当失去焦点时,对其进行数据验证

$(":text,:password,textarea", root).each(function () {

$(this).blur(function () {

var _validate = $(this).attr("check"); //获取check属性的值

if (_validate) {

var arr = _validate.split(‘ ‘); //用空格将其拆分成数组

for (var i = 0; i < arr.length; i++) {

//逐个进行验证,不通过跳出返回false,通过则继续

if (!check($(this), arr[i], $(this).val()))

return false;

else

continue;

}

}

})

})

//表单提交时执行验证,与上面的方法基本相同,只不过是在表单提交时触发

function _onSubmit() {

isok = true;

$(":text,:password,textarea", root).each(function () {

var _validate = $(this).attr("check");

if (_validate) {

var arr = _validate.split(‘ ‘);

for (var i = 0; i < arr.length; i++) {

if (!check($(this), arr[i], $(this).val())) {

isok = false; //验证不通过阻止表单提交,开关false

return; //跳出

}

}

}

});

}

//判断当前对象是否为表单,如果是表单,则提交时要进行验证

if (root.is("form")) {

root.submit(function () {

_onSubmit();

return isok;

})

}

//验证方法

var check = function (obj, _match, _val) {

 //根据验证情况,显示相应提示信息,返回相应的值

switch (_match) {

case ‘required‘:

return _val ? showMsg(obj, defaults.tips_success, true) : showMsg(obj, defaults.tips_required, false);

case ‘email‘:

return chk(_val, defaults.reg_email) ? showMsg(obj, defaults.tips_success, true) : showMsg(obj, defaults.tips_email, false);

case ‘num‘:

return chk(_val, defaults.reg_num) ? showMsg(obj, defaults.tips_success, true) : showMsg(obj, defaults.tips_num, false);

case ‘chinese‘:

return chk(_val, defaults.reg_chinese) ? showMsg(obj, defaults.tips_success, true) : showMsg(obj, defaults.tips_chinese, false);

case ‘mobile‘:

return chk(_val, defaults.reg_mobile) ? showMsg(obj, defaults.tips_success, true) : showMsg(obj, defaults.tips_mobile, false);

case ‘idcard‘:

return chk(_val, defaults.reg_idcard) ? showMsg(obj, defaults.tips_success, true) : showMsg(obj, defaults.tips_idcard, false);

case ‘pwd1‘:

pwd1 = _val; //实时获取存储pwd1值

return true;

case ‘pwd2‘:

return pwdEqual(_val, pwd1) ? showMsg(obj, defaults.tips_success, true) : showMsg(obj, defaults.tips_pwdequal, false);

default:

return true;

}

}

//判断两次密码是否一致(返回bool值)

var pwdEqual = function(val1, val2) {

return val1 == val2 ? true : false;

}

//正则匹配(返回bool值)

var chk = function (str, reg) {

return reg.test(str);

}

//显示信息

var showMsg = function (obj, msg, mark) {

$(obj).next("#errormsg").remove();//先清除

var _html = "<span id=‘errormsg‘ style=‘font-size:13px;color:gray;background:url(" + defaults.img_error + ") no-repeat 0 -1px;padding-left:20px;margin-left:5px;‘>" + msg + "</span>";

if (mark)

_html = "<span id=‘errormsg‘ style=‘font-size:13px;color:gray;background:url(" + defaults.img_success + ") no-repeat 0 -1px;padding-left:20px;margin-left:5px;‘>" + msg + "</span>";

$(obj).after(_html);//再添加

return mark;

}

}

})(jQuery);

先来说一说实现原理:

首先定义好正则,和相应的提示信息,

加上自定义check属性,

然后获取check属性的值,多个值用空格分开。利用split()将其拆分为数组,在逐个调用check()方法进行验证。

之后通过验证的返回值来确定显示的信息。

这里有两个验证是比较特别的,就是:

1.验证是否为空 (required)

2.两次密码是否一致 (pwd2)

这两个都没有用到正则,因为根本就用不上。 两次密码是否一致 ,单独写了个方法 pwdEqual();

插件里的验证正则我只写了几个 ,如果不够用可以自行扩展添加。

扩展只需3步:

1.添加正则,

2.添加相应提示信息,

3.check()方法中添加相应 case 处理

jquery实现表单验证简单实例演示

插件使用说明:

1.给表单下要进行验证的文本框,密码框 ,多行文本框加上自定义check属性

2.多个格式验证用空格间隔,如(同时验证必填和邮箱): check="required email"

3.如果要验证两次密码是否一致,则pwd1和pwd2一起使用,如下图:

pwd1存储第一次输入的值,pwd2存储第二次输入的值,如果你只用pwd1还好,但如果只用了pwd2,则验证是始终无法通过的。

下面给出DEMO示例代码:
<!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>

</head>

<body>

<form id="myform" method="post" action="success.html">

<ul>

<li>

邮箱:<input type="text" name="email" check="required email" />

</li>

<li>

密码:<input type="password" check="required pwd1" />

</li>

<li>

确认密码:<input type="password" check="required pwd2" />

</li>

<li>

手机:<input type="text" name="num" check="required mobile" />

</li>

<li>

数字:<input type="text" name="num" check="required num" />

</li>

<li>

地址:<textarea cols="5" rows="5" check="required"></textarea>

</li>

<li>

不加check验证的文本框:<input type="text" name="num" />

</li>

</ul>

<input type="submit" value="提交" />

</form>

<script src="js/jquery-1.4.4.min.js" type="text/javascript"></script>

<script src="js/jquery.similar.checkForm.js" type="text/javascript"></script>

<script type="text/javascript">

$("#myform").checkForm();

</script>

</body>

</html>

转自a5源码 http://down.admin5.com/info/2015/1124/129900.html

原文地址:https://www.cnblogs.com/dahei96/p/9456404.html

时间: 2024-10-06 09:36:44

jquery实现表单验证简单实例演示的相关文章

当文本框失去焦点即进行表单验证简单实例

当文本框失去焦点即进行表单验证简单实例:不少的表单验证都有这样的功能,就是当鼠标焦点离开文本框的时候,即刻进行合法性验证,下面就通过一个实例简单介绍一下如何实现此功能,代码实例如下: <script type="text/javascript"> function onblurs(){ if(myform.name.value==""){ alert("姓名不得为空!"); } else if(myform.address.value

JQuery中一个简单的表单验证的实例

html代码如下: <!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> <meta http-equiv=&quo

jQuery formValidator表单验证插件常见有关问题

jQuery formValidator表单验证插件常见问题 如何实现一个控件,根据不同的情况,实现不同的控制? 一个页面上我有几个tab页,如何实现每个Tab页上的控件单独校验? 我采用的页面上文字问题的方式,点提交的时候,有校验未通过的,除了文字提示外,还可以再弹出窗口提示吗? 所有校验通过后,我还要再做别的判断可以吗?我自己的判断没有通过可以中断提交吗? 我有一组的checkbox(radiobutton)如何设置校验? 我有2个表单元素,任意一个元素输入东西就算验证通过,如何写代码?比如

【干货】Laravel --Validate (表单验证) 使用实例

前言 : Laravel 提供了多种方法来验证应用输入数据.默认情况下,Laravel 的控制器基类使用ValidatesRequests trait,该trait提供了便利的方法通过各种功能强大的验证规则来验证输入的 HTTP 请求.要掌握 Laravel 强大的验证特性,让我们先看一个完整的验证表单并返回错误信息给用户的例子. 在这之前如果您是首次接触 Laravel 而且并不知道路由如何跳转到指定的控制器 可以查看博主的Restfulapi或者Laravel官网对路由的介绍,在这里就不做介

【锋利的jQuery】表单验证插件踩坑

和前几篇博文提到的一样,由于版本原因,[锋利的jQuery]表单验证插件部分又出现照着敲不出效果的情况. 书中的使用方法: 1. 引入jquery源文件, 2. 引入表单验证插件js文件, 3. 在form中class类名中添加"required","email"等去作为验证时读取的参数. 4. 调用代码: $("#commentform").validate(); 很不幸,报错了.前端有个说法是学新不学旧,这里就不去深究原因,直接提供最新的写法

jquery validate表单验证插件-推荐

1 表单验证的准备工作 在开启长篇大论之前,首先将表单验证的效果展示给大家.     1.点击表单项,显示帮助提示 2.鼠标离开表单项时,开始校验元素  3.鼠标离开后的正确.错误提示及鼠标移入时的帮助提醒 对于初学者而言,html表单验证是一项极其琐碎的事情.要做好表单验证,需要准备以下基本要素: 1.html表单结构:包含需要校验的表单元素: 2.js逻辑控制:在需要校验的表单元素上绑定事件,如点击.获取焦点.失去焦点等事件,并设置这些事件对应的执行函数: 3.css样式设置:针对需要校验的

jquery实现表单验证

用jquery实现简单的表单验证 HTML代码: 1 <form action="" method="post" id="form-data"> 2 <div id="content"> 3 <div> 4 <label for="username">用户名:</label> 5 <input type="text" na

jquery validate 表单验证插件

对于初学者而言,html表单验证是一项极其琐碎的事情.要做好表单验证,需要准备以下基本要素: 1.html表单结构:包含需要校验的表单元素: 2.js逻辑控制:在需要校验的表单元素上绑定事件,如点击.获取焦点.失去焦点等事件,并设置这些事件对应的执行函数: 3.css样式设置:针对需要校验的表单元素,需要设置默认的初始样式,以及触发元素绑定事件后的变化样式. 这3类基本要素中,html表单结构的创建相对简单.表单验证的重点和难点在于如何利用js及时有效地提醒用户有关表单操作的信息.这里我参考了百

jQuery插件 -- 表单验证插件jquery.validate.js

最常使用JavaScript的场合就是表单的验证,而jQuery作为一个优秀的javascript库,也提供了一个优秀的表单验证插件----Validation.Validation是历史最悠久的jquery插件之一,经过了全球范围内不同项目的验证,并得到了许多Web开发者的好评.作为一个标准的验证方法库,Validation拥有如下特点: 1.内置验证规则: 拥有必填.数字.Email.URL和信用卡号码等19类内置验证规则 2.自定义验证规则: 可以很方便地自定义验证规则 3.简单强大的验证