前言


上次我们说完jQuery中的动画之后,我们再来看一种jQuery在Web网页应用最为广泛的一种形式,这就是jQuery对表单的操作,通过jQuery对表单的操作,可以有效的提高用户体验。在此之前,我们首先要了解表单的组成部分。表单大致有3个部分组成。

第一部分由表单标签组成,包含url及所提交的方法。即我们通常写到的<form action=”#” method=”post”>当然提交方法也可以是get,他们之间的区别在此就不做讨论。

第二部分由表单域组成:包含文本框、密码框、隐藏域、多行文本框、复选框等等。

第三部分由表单按钮组成:包含提交按钮、复位按钮、一般按钮,用于控制将数据传送到服务器或者取消传送。

jQuery中对表单的操作主要是针对于第二部分,即对表单域的操作,例如对文本框、密码框、隐藏域的操作等等。首先我们先来看一个jQuery对表单的一个最简单的应用。

一. 单行文本框的应用

此处,我们首先来看HTML代码。

  1. <form action="#" method="post" id="regForm">
  2. <fieldset>
  3. <legend>个人基本信息</legend>
  4. <div>
  5. <label for="username">
  6. 名称:</label>
  7. <input id="username" type="text" value="admin" />
  8. </div>
  9. <div>
  10. <label for="password">
  11. 密码:</label>
  12. <input type="password" id="password" value="123456" />
  13. </div>
  14. <div>
  15. <label for="msg">
  16. 详细信息:</label>
  17. <textarea rows="3" cols="15">详细信息</textarea>
  18. </div>
  19. </fieldset>
  20. </form>

初始化HTML代码后,如图1所示

我们所需要做的效果就是当光标移入文本框的时候,会出现阴影,表示此时正在操作的正是此行的文本框,效果就如图2所示。

那么应该如何达到这个效果呢?其实非常简单,就是为文本框添加两个事件:focus与blur事件。具体jQuery代码如下所示。

  1. <script type="text/javascript">
  2. $(function () { //加载DOM
  3. $(":input").focus(function () { //选中所有input标签,为其添加focus事件,即当光标移入所选区域内所触发的事件
  4. $(this).addClass("focus"); //此处为其添加样式"focus”,注意我的样式写到了样式表中,此处未列出,样式即加背景与边框
  5. }).blur(function () { //此处添加blur事件
  6. $(this).removeClass("focus"); //移除样式
  7. });
  8. });
  9. </script>

此时便完成了我们预定的目标。

二. 表单验证

在各大网站中,jQuery应用最广泛的一种恐怕就是表单验证了吧。无论是我们在申请或者填写登录信息的时候,或多或少都会用到表单验证。我们在这里就好好说说表单验证!可能很多人都会用插件来用于表单验证,我们在这里首先自己写一种表单验证,然后我们再通过插件再来写一次表单验证,便于理解。

还是老样子,我们首先来看HTML代码。

  1. <form action="" method="post">
  2. <div>
  3. <div class="int">
  4. <label for="username">
  5. 用户名:</label>
  6. <input type="text" name="username" class="required" id="username" />
  7. </div>
  8. <div class="int">
  9. <label for="email">
  10. 邮箱:</label>
  11. <input type="text" name="email" class="required" id="email" />
  12. </div>
  13. <div class="int">
  14. <label for="personmsg">
  15. 个人资料</label>
  16. <input type="text" name="personmsg" />
  17. </div>
  18. <div class="sub">
  19. <input type="submit" id="send" value="提交" /><input type="reset" id="res" value="重置" />
  20. </div>
  21. </div>
  22. </form>

我们再为其添加css样式后,此处不列出css样式,使其显示如图3所示。

我们的目标效果是:

1. 用户名及邮箱为必填项,如果没有填写,提示用户填写。

2.对用户名及邮箱进行有效性验证,要求用户名至少为6位,当用户输入小于6位时,则会提示用户“请输入至少6位用户名”,邮箱中必须复合邮箱规范。

我们先整理下思路:

1. 首先我们寻找表单中的必填文本框,即class=”required“的文本框,为其添加样式”*“。

2. 针对用户名及密码的文本框,我们进行有效性判断,这里我们以用户名的文本框为例进行分析,当光标离开文本框的时候应触发blur事件,此时开始判断用户所输入内容的有效性,我们在这里假定用户名至少为6位,通过判断文本框的值的长度来返回不同的信息,如果用户输入内容为空或者字符小于6位,则返回一个错误消息提示用户输入必须至少6位,需要注意的是,我们在返回消息时候可以为其添加样式,当然样式最好定义在css中(样式中最好带有图片),如图4所示。如果输入长度大于等于6位,我们则返回正确信息,并为其添加好样式,如图5所示。同理,也为邮箱进行有效性判断,不过这里值得注意的是,邮箱是通过正则表达式进行判断的。

3. 好了,大致这些就进行的可以了,但是,如何能更好的提高用户体验呢?那就是我们希望,用户在焦点引入文本框的时候就能够进行提示,并且每键入一个字符的时候,就可以再次进行有效性验证!那么就在上面的基础上在为文本框添加两个事件focus与keyup事件,此时我们直接在这两个事件中添写triggerHandler(“blur”)就可以,此处一定要写triggerHandler,而不能是trigger,如果写trigger的话,则不但会激活我们写的blur事件,同时也会激活其自带的鼠标blur事件,而triggerHandler则可以将系统默认鼠标blur事件关闭。

4. 当然,最后我们也应该为两个按钮添加click事件。那么我们就来具体看看代码吧。

  1. <script type="text/javascript">
  2. $(function () { //加载DOM
  3. //遍历class="required"的元素,即必填元素,并为其添加*
  4. $("input.required").each(function () {
  5. var $required = $("<strong class='high'>*</strong>");
  6. $(this).parent().append($required);
  7. });
  8. //为表单添加失去焦点的事件
  9. $("form :input").blur(function () {
  10. $(this).parent().find(".formtips").remove();
  11. if ($(this).is("#username")) { //验证用户名
  12. if (this.value == "" || this.value.length < 6) {
  13. var errorMsg = "请输入至少6位用户名";
  14. $(this).parent().append("<span class='formtips onError'>" + errorMsg + "</span>");
  15. } else {
  16. var okMsg = "输入正确";
  17. $(this).parent().append("<span class='formtips onOk'>" + okMsg + "</span>");
  18. }
  19. }
  20. if ($(this).is("#email")) { //验证邮箱
  21. if (this.value == "" || (this.value != "" && !/.+@.+\.[a-zA-Z]{2,4}$/.test(this.value))) {
  22. var errorMsg = "请输入正确的邮箱地址";
  23. $(this).parent().append("<span class='formtips onError'>" + errorMsg + "</span>");
  24. } else {
  25. var okMsg = "输入正确";
  26. $(this).parent().append("<span class='formtips onOk'>" + okMsg + "</span>");
  27. }
  28. }
  29. }).keyup(function () {
  30. $(this).triggerHandler("blur");
  31. }).focus(function () {
  32. $(this).triggerHandler("blur");
  33. });
  34. //提交,通过判断返回的Error的次数来判断是否可以提交
  35. $("#send").click(function () {
  36. $("input.required").trigger("blur");
  37. var numError = $("form .onError").length;
  38. if (numError) {
  39. return false;
  40. }
  41. alert("success!");
  42. });
  43. //重置
  44. $("#res").click(function () {
  45. $(".formtips").remove();
  46. });
  47. })
  48. </script>

看了这一大推代码后,肯定心中会产生个想法,有没有在jQuery的基础上封装好的一种插件使我们可以通过引用插件对表单进行验证,从而可以高效率的开发呢?答案当然是肯定的,在http://plugins.jquery.com/validation/中我们可以找到一款名为validation的插件。在此,我们用插件重新开发一次!

HTML代码如以先前HTML代码类似,我们具体来看jQuery代码。

  1. <script type="text/javascript">
  2. $(document).ready(function () {
  3. $("#infoForm").validate({ //验证的是id="infoForm"的表格
  4. rules: { //定义验证规则rules
  5. username: { //对用户名的验证规则
  6. required: true,
  7. minlength: 6
  8. },
  9. email: { //对email的验证规则
  10. required: true,
  11. email:true
  12. }
  13. },
  14. messages: { //返回的验证信息
  15. username: {
  16. required: "请输入用户名",
  17. minlength: "请至少输入6个字符"
  18. },
  19. email: {
  20. required: "请输入邮箱",
  21. email: "请检查所输入的邮箱格式"
  22. }
  23. }
  24. });
  25. })
  26. </script>

用插件来写jQuery,相对而言更好写,这里需要注意的是validate中的与form的验证是通过<input>的name属性进行关联验证的,如用户名的验证,通过写好username验证。

就先写到这里吧,利用好jQuery中对表单的验证,可以有效提高用户的体验!


实例代码下载

转自:http://www.cnblogs.com/yanfengfree/p/3536473.html

jQuery笔记(五)jQuery表单验证的更多相关文章

  1. SpringBoot(五)_表单验证

    SpringBoot(五)_表单验证 参数校验在我们日常开发中非常常见,最基本的校验有判断属性是否为空.长度是否符合要求等,在传统的开发模式中需要写一堆的 if else 来处理这些逻辑,很繁琐,效率 ...

  2. JQuery攻略(五)表单验证

    表单验证,字段空白,输入合法,数据合法....... 此章节有 1.1字段验证 1.2正则表达式验证 1.3复选框的勾选 1.1字段验证 1.字段非空 $(document).ready(functi ...

  3. 表单提交学习笔记(二)—使用jquery.validate.js进行表单验证

    一.官网下载地址:http://plugins.jquery.com/validate/ 二.用法 1.在页面上进行引用 <script src="~/scripts/jquery-1 ...

  4. jQuery html5Validate基于HTML5表单验证插件

    更新于2016-02-25 前面提到的新版目前线上已经可以访问: http://mp.gtimg.cn/old_mp/assets/js/common/ui/Validate.js demo体验狠狠地 ...

  5. jQuery实现用户注册的表单验证

    用户注册的表单往往是需要进行验证的,否则会有一些不否合规则的数据入库,后果会不堪设想,本文通过jquery来实现. <html>  <head>  <meta chars ...

  6. jquery plugin 之 form表单验证插件

    基于h5表单验证系统.扩展了对easyui组件的支持 先上图: 提示样式用到了伪对象的 {content: attr(xxx)}函数方法,实现提示信息能动态切换. 1.关键属性说明: type: 表单 ...

  7. Yii学习笔记之四(表单验证 api 翻译)

    1.表单验证 对于用户输入的全部数据,你不能信任,必须加以验证. 全部框架如此.对于yii 能够使用函数  yii\base\Model::validate()  进行验证 他会返回boolean值的 ...

  8. angular学习的一些小笔记(中)之表单验证

    表单验证 我去,我感觉我这个人其实还是一个很傻逼的一个人,老是因为拼错了一个单词或者怎么样就浪费我很长时间,这样真的不行不行,要正确对待这个问题,好了,说正题吧,angular也有表单验证minlen ...

  9. 【代码笔记】Web-JavaScript-JavaScript表单验证

    一,效果图. 二,代码. <!DOCTYPE html> <html> <head> <meta charset="utf-8"> ...

  10. Spring Boot笔记八:表单验证

    所谓的表单验证,就是为了防止用户乱输入的,这个问题前端的HTML5就可以判断了,其实不需要后端来验证,这里还是讲一下后端验证 首先,我们的Person类,我们加上一些表单验证的注释,如下: packa ...

随机推荐

  1. POJ_1182_并查集

    http://poj.org/problem?id=1182 pre构建有关系的号码的树,rel保存当前号码与根的关系,0表示相同,1表示根吃当前,2表示当前吃根. 代码中的更新公式可以先把各种情况枚 ...

  2. HDU 6562 lovers 2018CCPC吉林H(线段树)

    题意: 初始n个空串,m个操作: 1.给[l,r]的所有字符串头尾加一个‘d’,将原字符串x变为dxd 2.求[l,r]所有字符串代表的数字之和mod 1e9+7 思路: 据说是硬核线段树.. 对于线 ...

  3. 拖延症?贪玩?来试试"百万金币时间管理法"

    中午吃完饭就想休息? 一到假期就起不来? 总是想玩游戏? 究其原因是因为我们没有深刻意识到时间的价值. 这点在大气爱智慧的视频:懂这个道理,保证让你快速自律起来!拯救拖延症,更好的戒掉不良习惯中有讲到 ...

  4. 1. 学习Linux操作系统

    1.熟练使用Linux命令行(鸟哥的Linux私房菜.Linux系统管理技术手册) 2.学会Linux程序设计(UNIX环境高级编程) 3.了解Linux内核机制(深入理解LINUX内核) 4.阅读L ...

  5. 基于Go的马蜂窝旅游网分布式IM系统技术实践

    一.引言 即时通讯(IM)功能对于电商平台来说非常重要,特别是旅游电商. 从商品复杂性来看,一个旅游商品可能会包括用户在未来一段时间的衣.食.住.行等方方面面.从消费金额来看,往往单次消费额度较大.对 ...

  6. win10系统安装VMware虚拟机软件以及linux系统

    一.安装VMware 1.在VMware官网下载VMware Workstation Pro 15.5.1 下载地址:https://my.vmware.com/cn/web/vmware/detai ...

  7. gridFS-Nginx的安装与使用

    在使用gridFs的nginx模块时,先确认好你的机器上已经安装好了mongo 首先通过git将最新的gridfs的nginx模块下载到本地 git clone https://github.com/ ...

  8. 编辑crontab添加Linux计划任务

    在做实验楼的比赛时的题目 用到了crontable 1. 为用户shiyanlou添加一个计划任务 2. 每天凌晨2点定时执行 3. 将/var/log/dpkg.log /var/log/mysql ...

  9. shell脚本 inotify + rsync 同步脚本

    1.这是很简单的一个 文件监控+触发同步脚本 监控一台服务器下的一个文件夹,发生改变则向另一个个文件夹进行同步. 具体的inotify命令  rsync命令  可以看linux分类下的介绍 inoti ...

  10. 杭电-------2032杨辉三角(C语言写)

    #include<stdio.h> ][] = { }; void init() { int i, j; ; i < ; i++) { a[i][] = ; a[i][i] = ; ...