jQuery成功之路——jQuery事件和插件概述

news2024/12/29 8:47:49

一、jQuery的事件

1.1常用事件

jQuery绑定事件,事件名字没有on。

事件名称事件说明
blur事件源失去焦点
click单击事件源
change内容改变
keydown接受键盘上的所有键(键盘按下)
keypress接受键盘上的部分键(ctrl,alt,shift等无效)(键盘按下)
keyup键盘抬起
mouseover鼠标悬停(鼠标移入)
mouseout鼠标离开

1.2 on绑定事件

  • 语法

jQuery元素对象.on(事件名称,function(){
    //逻辑代码
})
​
其中:事件名称是jQuery的事件方法的方法名称,例如:click、mouseover、mouseout、focus、blur等
  • 代码

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <script src="js/jquery-3.3.1.js" type="text/javascript" charset="utf-8"></script>
        <script type="text/javascript">
            $(function(){
                /*$("#btn").on("click",function(){
                    alert("按钮被点击了!");
                });*/
                $("#btn").click(function(){
                    alert("按钮被点击了!");
                });
            });
        </script>
    </head>
    <body>
        <input id="btn" type="button" value="使用on绑定点击事件">
    </body>
</html>
  • 代码效果

1.3 off解绑事件

  • 语法

jQuery元素对象.off(事件名称);
​
其中:参数事件名称如果省略不写,可以解绑该jQuery对象上的所有事件
  • 代码
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <script src="../js/jquery-3.3.1.min.js" type="text/javascript" charset="utf-8"></script>
        <script type="text/javascript">
            $(function(){
                $("#btn-on").on("click",function(){
                    alert("使用on绑定点击事件");
                });
                $("#btn-off").click(function(){
                    $("#btn-on").off("click");
                });
            });
        </script>
    </head>
    <body>
        <input id="btn-on" type="button" value="使用on绑定点击事件">
        <input id="btn-off" type="button" value="使用off解绑点击事件">
    </body>
</html>

代码效果

1.4 事件切换

普通写法

  • 代码

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <script src="../js/jquery-3.3.1.min.js" type="text/javascript" charset="utf-8"></script>
        <script type="text/javascript">
            $(function(){
                $("#myDiv").mouseover(function(){
                    $(this).css("background","green");
                });
                $("#myDiv").mouseout(function(){
                    $(this).css("background","red");
                });
            });
        </script>
    </head>
    <body>
        <div id="myDiv" style="width:300px;height:300px;background:red">鼠标移入变成绿色,移出回复红色</div>
    </body>
</html>
  • 效果

链式写法

  • 代码

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <script src="../js/jquery-3.3.1.min.js" type="text/javascript" charset="utf-8"></script>
        <script type="text/javascript">
            $(function(){
                $("#myDiv").mouseover(function(){
                    $(this).css("background","green");
                }).mouseout(function(){
                    $(this).css("background","red");
                });
            });
        </script>
    </head>
    <body>
        <div id="myDiv" style="width:300px;height:300px;background:red">鼠标移入变成绿色,移出回复红色</div>
    </body>
</html>
  • 效果

切换函数写法

  • 语法

hover([over,]out)
    其中:
    over代表鼠标移入事件触发的函数;
    out代表鼠标移出事件触发的函数。
  • 代码

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <script src="../js/jquery-3.3.1.min.js" type="text/javascript" charset="utf-8"></script>
        <script type="text/javascript">
            $(function(){
                $("#myDiv").hover(function(){
                    $(this).css("background","green");
                },function(){
                    $(this).css("background","red");
                });
            });
        </script>
    </head>
    <body>
        <div id="myDiv" style="width:300px;height:300px;background:red">鼠标移入变成绿色,移出回复红色</div>
    </body>
</html>
  • 效果

二、jQuery的插件

2.1jQuery的插件机制

jQuery插件机制概述

jQuery插件的机制很简单,就是利用jQuery提供的jQuery.fn.extend()和jQuery.extend()方法,扩展jQuery的功能。

jQuery插件机制语法

语法解释
jQuery.fn.extend(object)对jQuery对象进行方法扩展
jQuery.extend(object)对jQuery全局进行方法扩展

对jQuery对象进行方法扩展

  • 代码

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <script src="jquery-3.3.1.js" type="text/javascript" charset="utf-8"></script>
        <script type="text/javascript">
            //普通方式--点击选中复选框
            function checkFn(){
                $("input[type='checkbox']").prop("checked",true);
            }
            //普通方式--点击取消复选框选中
            function uncheckFn(){
                $("input[type='checkbox']").prop("checked",false);
            }
            
            //对jQuery的函数进行扩展
            jQuery.fn.extend({
                //定义全选函数
                check:function(){
                    $(":checkbox").prop("checked",true);
                },
                //定义全不全函数
                uncheck:function(){
                    $(":checkbox").prop("checked",false);
                }
            });
            
            //插件方式--点击选中复选框
            function checkFn1(){
                //任何一个jQuery对象都可以调用
                $("#btn1-check").check();
            }
            
            //插件方式--点击选中复选框
            function uncheckFn2(){
                $("#btn-check").uncheck();
            }
        </script>
    </head>
    <body>
        <input id="btn-check" type="button" value="点击选中复选框" onclick="checkFn()">
        <input id="btn-uncheck" type="button" value="点击取消复选框选中" onclick="uncheckFn()">
        <br/>
        <input type="checkbox" value="football">足球
        <input type="checkbox" value="basketball">篮球
        <input type="checkbox" value="volleyball">排球
    
    </body>
</html>
​
  • 效果

对jQuery全局进行方法扩展

  • 代码

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <script src="jquery-3.3.1.js" type="text/javascript" charset="utf-8"></script>
        <script type="text/javascript">
            $.extend({
                  //定义js对象的min属性,值是一个函数,返回a与b比较的最小值
                  min: function(a, b) { return a < b ? a : b; },
                  //定义js对象的max属性,值是一个函数,返回a与b比较的最大值
                  max: function(a, b) { return a > b ? a : b; }
            });
            
            alert($.max(3,5));
        </script>
    </head>
    <body>
        
    </body>
</html>
  • 效果

2.2表单校验插件validator

表单校验插件概述

网络上有许多成熟的插件共使用者参考,插件就是将jquery实现的常用操作进行封装,封装后的“小框架“就可以叫做插件,按照插件的语法去操作可以实现很多复杂的功能,而我们需要做的是学会该插件的使用语法即可。表单校验插件是按照一定的语法编写代码,可以使用简单的代码完成复杂的表单校验工作。

表单校验插件的基本语法

开发步骤
  • 下载jquery-validation插件

  • 将该插件(也就是一个js文件)导入到我们的工程中

  • 在要使用校验插件的html中引入该js文件

  • 编写表单校验的代码(语法)

    $("form表单的选择器").validate({
        rules:{
          表单项name值:校验规则,
          表单项name值:校验规则... ...
        },
        messages:{
          表单项name值:错误提示信息,
          表单项name值:错误提示信息... ...
        }
    });

    其中,rules是对表单项校验的规则,messages是对应的表单项校验失败后的错误提示信息。

    注意,当错误提示信息不按照我们预想的位置显示时,我们可以按照如下方式进行设置自定义错误显示标签放在我们需要显示的位置,当此表单项验证不通过时会将此信息自动显示出来,jQuery验证插件会自动帮助我们控制它的显示与隐藏。

    <lable for="html元素name值" class="error" style="display:none">错误信息</lable>

    如果设置了错误lable标签就不必在messages中设置此表单项错误提示信息了。

常用的校验规则


表单校验插件自定义校验方法

如果预定义的校验规则尚不能满足需求的话可以进行自定义校验规则:

自定义校验规则步骤如下:

  • 使用$.validator.addMethod("校验规则名称",function(value,element,params){});

  • 在rules中通过校验规则名称使用校验规则

  • 在messages中定义该规则对应的错误提示信息其中

    • value是校验组件的value值

    • element是校验组件的节点对象

    • params是校验规则的参数

代码实现

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>我的jquery表单校验页面</title>
        
        <style type="text/css">
            p{text-align: center;font-size:24px;}
            table{margin: 0 auto;border: 0;}
            table tr{height:40px;border:0;}
            table tr td{padding:0 14px;border:1px solid #999}
            .error{color:red}
        </style>
        
        <script type="text/javascript" src="jquery-3.3.1.js"></script>
        <script type="text/javascript" src="jquery.validate.js"></script>
        <script type="text/javascript">
            
            $(function(){
                //自定义校验规则
                /*
                 * 参数:
                 *  第一个 规则名称
                 *  第二个 规则的实现逻辑 匿名函数
                 */
                $.validator.addMethod("cardlength",function(value,element,param){
                    //校验输入的长度是否满足15或18
                    if(value.trim().length!=param[0]&&value.trim().length!=param[1]){
                        return false; //代表该校验器不通过  显示该校验规则对应的错误信息
                    }
                    return true;
                });
                
                
                $.validator.addMethod("card15",function(value,element,param){
                    //校验15位的规则是否正确  --- 都是数字
                    var regExp15 = /^[0-9]{15}$/;
                    if(value.trim().length==15){
                        //校验格式
                        return regExp15.test(value.trim());
                    }
                    return true;//放行 不归该校验器校验 
                });
                
                $.validator.addMethod("card18",function(value,element,param){
                    if(param){
                        //校验15位的规则是否正确  --- 都是数字
                        var regExp18 = /^[0-9]{18}|[0-9]{17}X$/;
                        if(value.trim().length==18){
                            //校验格式
                            return regExp18.test(value.trim());
                        }
                    }
                    return true;//放行 不归该校验器校验 
                });
                
                $("#empForm").validate({
                    rules:{
                        realname:"required",
                        username:{
                            required:true,
                            rangelength:[5,8]
                        },
                        psw:{
                            required:true,
                            minlength:6,
                            maxlength:12
                        },
                        psw2:{
                            required:true,
                            minlength:6,
                            maxlength:12,
                            equalTo:"#psw"
                        },
                        gender:{
                            required:true
                        },
                        age:{
                            required:true,
                            range:[26,50]
                        },
                        edu:{
                            required:true
                        },
                        birthday:{
                            required:true,
                            dateISO:true,
                            date:true
                        },
                        checkbox1:{
                            required:true
                        },
                        email:{
                            email:true
                        },
                        card:{
                            required:true,
                            cardlength:[15,18],
                            card15:true,
                            card18:true
                        }
                    },
                    messages:{
                        realname:"真实姓名必须写",
                        username:{
                            required:"用户名必须写",
                            rangelength:"长度在5-8之间"
                        },
                        psw:{
                            required:"密码必须写",
                            minlength:"最小是6位",
                            maxlength:"最大是12位"
                        },
                        psw2:{
                            required:"密码必须写",
                            minlength:"最小是6位",
                            maxlength:"最大是12位",
                            equalTo:"密码输入不一致"
                        },
                        age:{
                            required:"年龄必须写",
                            range:"年龄必须在26-50之间"
                        },
                        edu:{
                            required:"必须选择一个"
                        },
                        birthday:{
                            required:"生日必须填写",
                            dateISO:"日期格式不正确",
                            date:"日期非法"
                        },
                        email:{
                            email:"邮箱格式不正确"
                        },
                        card:{
                            required:"身份证必须填写",
                            cardlength:"身份证长度是15或18位",
                            card15:"15位的身份证必须都是数字",
                            card18:"18位的身份证必须都是数字或末尾是X"
                        }
                    }
                });
            });
            
            
            
        </script>
​
</head>
<body>
    <p>员工信息录入</p>
    <form name="empForm" id="empForm" method="post" action="test.html">
        <table border=1>
            <tr>
                <td>真实姓名(不能为空 ,没有其他要求)</td>
                <td><input type="text" id="realname" name="realname" />
                </td>
            </tr>
            <tr>
                <td>登录名(登录名不能为空,长度应该在5-8之间,可以包含中文字符(一个汉字算一个字符)):</td>
                <td><input type="text" id="username" name="username" /></td>
            </tr>
             <tr> 
              <td>密码(不能为空,长度6-12字符或数字,不能包含中文字符):</td>
              <td><input type="password" id="psw"  name="psw" /></td>
            </tr>
            <tr> 
              <td>重复密码密码(不能为空,长度6-12字符或数字,不能包含中文字符):</td>
              <td><input type="password" id="psw2" name="psw2" /></td>
            </tr>
            <tr>
                <td>性别(必选其一)</td>
                <td>
                    <input  type="radio" id="gender_male" value="m" name="gender"/>&nbsp;男
                    <input  type="radio" id="gender_female" value="f" name="gender"/>&nbsp;女
                    <label class="error" for="gender" style="display: none;">必须选择一个性别                       </label>
                </td>
            </tr>
            <tr>
                <td>年龄(必填26-50):</td>
                <td><input type="text" id="age" name="age" /></td>
            </tr>
            <tr> 
              <td>你的学历:</td>
              <td> <select name="edu" id="edu">
                      <option value="">-请选择你的学历-</option>
                      <option value="a">专科</option>
                      <option value="b">本科</option>
                      <option value="c">研究生</option>
                      <option value="e">硕士</option>
                      <option value="d">博士</option>
                  </select>
              </td>
            </tr>
            <tr> 
              <td>出生日期(1982/09/21):</td>
               <td><input type="text" id="birthday"  name="birthday" value="" /></td>
            </tr>
            <tr> 
              <td>兴趣爱好:</td>
              <td colspan="2"> 
                  <input type="checkbox" name="checkbox1" id="qq1"/>&nbsp;乒乓球 &nbsp;
                  <input type="checkbox" name="checkbox1" id="qq2" value="1" />&nbsp;羽毛球 
                  <input type="checkbox" name="checkbox1" id="qq3" value="2" />&nbsp;上网
                  <input type="checkbox" name="checkbox1" id="qq4" value="3" />&nbsp;旅游
                  <input type="checkbox" name="checkbox1" id="qq5" value="4" />&nbsp;购物
                  <label class="error" for="checkbox1" style="display: none;">必须选一个</label>
              </td>
            </tr>
            <tr> 
                  <td align="left">电子邮箱:</td>
                  <td><input type="text" id="email" name="email" /></td>
            </tr>
            <tr> 
                  <td align="left">身份证(15-18):</td>
                  <td><input type="text" id="card" name="card" /></td>
            </tr>
            <tr>
                <td></td>
                <td><input type="submit"  name="firstname"  id="firstname" value="保存"></td>
            </tr>
        </table>
</form>
</body>
</html>

代码效果

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/974123.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【数据结构练习】栈的面试题集锦

目录 前言&#xff1a; 1.进栈过程中可以出栈的选择题 2.将递归转化为循环 3.逆波兰表达式求值 4.有效的括号 5. 栈的压入、弹出序列 6. 最小栈 前言&#xff1a; 数据结构想要学的好&#xff0c;刷题少不了&#xff0c;我们不仅要多刷题&#xff0c;还要刷好题&#x…

动态规划:路径和子数组问题(C++)

动态规划&#xff1a;路径和子数组问题 路径问题1.不同路径&#xff08;中等&#xff09;2.不同路径II&#xff08;中等&#xff09;3.下降路径最⼩和&#xff08;中等&#xff09;4.地下城游戏&#xff08;困难&#xff09; 子数组问题1.最大子数组和&#xff08;中等&#xf…

【Java】关于JDK 8的HashMap

文章目录 HashMap 简介数据结构Hash构造方法get(key)方法步骤一&#xff1a;通过key获取所在桶的第一个元素是否存在步骤二:该节点的hash和key是否与要查询的hash和key匹配步骤三:当对应桶中不止一个节点时&#xff0c;根据不同节点类型查询 put(key,value)为什么树化&#xff…

4.正则提取html中的img标签的src内容

我们以百度贴吧的1吧举例 目录 1 把网页搞下来 2 收集url 3 处理url 4 空的src 5 容错 6 不使用数字作为文件名 7 并不是所有的图片都用img标签表示 8 img标签中src请求下来不一定正确 9 分页 1 把网页搞下来 搞下来之后&#xff0c;双击打开是这样的 2 收…

leetcode 143. 重排链表

2023.9.5 先将链表中的节点存储到数组中&#xff0c;再利用双指针重新构造符合条件的链表。代码如下&#xff1a; /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}* ListNod…

java八股文面试[数据库]——Page页的结构

mysql中数据是存储在物理磁盘上的&#xff0c;而真正的数据处理又是在内存中执行的。由于磁盘的读写速度非常慢&#xff0c;如果每次操作都对磁盘进行频繁读写的话&#xff0c;那么性能一定非常差。为了上述问题&#xff0c;InnoDB将数据划分为若干页&#xff0c;以页作为磁盘与…

了解下iVX,它可能会刷新你对传统软件开发的认知!

知识目录 前言一、聊聊传统编程语言二、iVX的诞生三、iVX VS 传统编程语言3.1 图形化 vs 文本化3.2 逻辑与语法的解耦3.3 组件与库3.4 编译与代码生成3.5 IDE与语言设计的整合3.6 面向群体3.7 灵活性与便利性 四、iVX提供多样模板&#xff0c;快来 ~五、iVX VS 其他低代码平台结…

面试中的自我介绍:首印象决定一切

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

MES系统来料检验:优化制造业质量控制

一、MES系统来料检验的定义&#xff1a; MES系统来料检验是指制造执行系统中的质量管理模块&#xff0c;用于对供应商提供的原材料和零部件进行质量检查和验证。该模块涵盖了来料质量数据的采集、分析、报告和追溯等功能&#xff0c;以确保来料符合质量要求&#xff0c;并提供…

【web知识清单】你想要的都有:网络、HTTP、会话保持、认证授权......持续更新中

作者简介&#xff1a; 目录 1.网络 2.HTTP 2.1.报文结构 2.1.1.请求报文 2.1.2.响应报文 2.2.方法 2.3.HTTPS 2.4.跨域 3.会话保持 3.1.概述 3.2.cookie 3.3.session 4.认证授权 4.1.Token 4.2.JWT 4.3.oauth 1.网络 计算机网络&#xff1a; 计算机网络&…

Lesson4-1:OpenCV图像特征提取与描述---角点特征

学习目标 理解图像的特征知道图像的角点 1 图像的特征 大多数人都玩过拼图游戏。首先拿到完整图像的碎片&#xff0c;然后把这些碎片以正确的方式排列起来从而重建这幅图像。如果把拼图游戏的原理写成计算机程序&#xff0c;那计算机就也会玩拼图游戏了。 在拼图时&#xff…

Problem: 205. 同构字符串;力扣;python

题目描述 代码展示 # class Solution: # def isIsomorphic(self, s: str, t: str) -> bool: # dict {} # flag 0 # for i in range(len(s)): # #记录&#xff0c;s # if s[i] not in dict.keys(): # …

【真题解析】系统集成项目管理工程师 2023 年上半年真题卷(综合知识)

本文为系统集成项目管理工程师考试(软考) 2023 年上半年真题(全国卷),包含答案与详细解析。考试共分为两科,成绩均 ≥45 即可通过考试: 综合知识(选择题 75 道,75分)案例分析(问答题 4 道,75分)综合知识(选择题*75)1-10 题11-20 题21-30 题31-40 题41-50 题51-60 …

让GPT成为您的科研加速器丨GPT引领前沿与应用突破之GPT4科研实践技术与AI绘图

GPT对于每个科研人员已经成为不可或缺的辅助工具&#xff0c;不同的研究领域和项目具有不同的需求。如在科研编程、绘图领域&#xff1a;1、编程建议和示例代码:无论你使用的编程语言是Python、R、MATLAB还是其他语言&#xff0c;都可以为你提供相关的代码示例。​2、数据可视化…

vs code调试rust乱码问题解决方案

在terminal中 用chcp 65001 修改一下字符集&#xff0c;就行了。有的博主推荐 修改 区域中的设置&#xff0c;这会引来很大的问题。千万不要修改如下设置&#xff1a;

宁德时代龙头,比亚迪榜眼:1-7 月全球电动汽车电池市场份额公布

根据SNE Search公布的数据显示&#xff0c;今年1-7月全球电动汽车电池的消费总量为362.9 千兆瓦时&#xff08;GWh&#xff09;&#xff0c;比去年同期的243.2 千兆瓦时&#xff08;GWh&#xff09;增长了49.2%。这表明电动汽车市场的增长势头依然强劲。 在这些数据中&#xff…

QuantLib学习笔记——InterestRate的应用

⭐️ 单利还是复利 巴菲特老爷子有句名言&#xff1a;“人生就像滚雪球&#xff0c;重要的是发现很湿的雪和很长的坡。” 很湿的雪&#xff0c;指的就是复利。很长的坡&#xff0c;指的就是时间。很湿的雪和很长的坡组合起来&#xff0c;就能滚成巨大的雪球。 哈哈&#xff0…

南京市玄武区委常委、组织部部长任宁一行率企业家研修班莅临麒麟信安调研交流

为学习在先进科学技术、人才引育等方面的领先经验&#xff0c;进一步加强交流合作&#xff0c;9月4日上午&#xff0c;南京市玄武区委常委、组织部部长任宁&#xff0c;玄武区委组织部副部长、两新工委书记鲁琳&#xff0c;玄武区委组织部人才综合服务科科长韩静玮等领导一行带…

Apache NIFI将Json数据转为SQL语句并插入到数据库表中

说明 本文中的NIFI是使用docker进行安装的&#xff0c;所有的配置参考&#xff1a;docker安装Apache NIFI 需求背景 现在有一个文件&#xff0c;里面存储的是一些json格式的数据&#xff0c;要求将文件中的数据存入数据库表中&#xff0c;以下是一些模拟的数据和对应的数据库…

Linux_VMware_虚拟机磁盘扩容

来源文章 &#xff1a;VMware教学-虚拟机扩容篇_vmware虚拟机扩容_系统免驱动的博客-CSDN博客 由于项目逐步的完善&#xff0c;需要搭建的中间件&#xff0c;软件越来越多&#xff0c;导致以前虚拟机配置20G的内存不够用了&#xff0c;又不想重新创建新的虚拟机&#xff0c;退…