javascript委托(Delegate)blur和focus用法实例分析

yizhihongxing

JavaScript 委托(Delegate)blur和focus用法实例分析

在 JavaScript 中,我们常常需要对页面元素添加一些事件,比如 click、mouseover、keyup 等等。但是,如果页面中有很多元素,我们就需要对每个元素都添加事件,这样做会显得很麻烦。所以,JavaScript 委托(Delegate)blur和focus用法应运而生,它可以在页面中只添加一个事件,然后通过事件冒泡的机制来处理所有这个事件的子元素。

委托(Delegate)blur的用法实例:

当我们需要对表格中的 input 输入框进行验证时,通过 Delegate Blur的写法可以减少代码的重复。

HTML代码:

<table>
  <tr>
    <td>用户名:</td>
    <td><input type="text" id="username" /></td>
  </tr>
  <tr>
    <td>密码:</td>
    <td><input type="password" id="password" /></td>
  </tr>
  <tr>
    <td>确认密码:</td>
    <td><input type="password" id="repassword" /></td>
  </tr>
</table>

JavaScript代码:

function validate(e) {
  var target = e.target; // 获取事件触发元素
  var id = target.getAttribute('id'); // 获取元素的 id
  var value = target.value; // 获取元素的值

  switch (id) { // 针对不同的 input 进行不同的验证
    case 'username':
      if (value == '') {
        alert('请输入用户名!');
      }
      break;
    case 'password':
      if (value == '') {
        alert('请输入密码!');
      }
      break;
    case 'repassword':
      var password = document.getElementById('password').value;
      if (value == '') {
        alert('请输入确认密码!');
      } else if (value != password) {
        alert('两次输入的密码不一致!');
      }
      break;
  }
}

var table = document.getElementsByTagName('table')[0];
table.addEventListener('blur', validate, true); // 委托 blur 事件到 table 上

在上述代码中,我们首先定义了一个 validate 函数来验证输入框的值。然后,通过获取事件触发元素、元素的 id 和元素的值,我们就可以针对每个输入框进行不同的验证。最后,我们通过 table 的委托 blur 事件来实现对所有输入框的统一处理。

委托(Delegate)focus的用法实例:

当我们需要让表单 input 输入框中的 placeholder 文字在输入框获得焦点时消失掉,失去焦点时恢复,通过 Delegate Focus的写法可以减少代码的重复。

HTML代码:

<input type="text" placeholder="请输入内容" />

JavaScript代码:

function focusHandler(e) {
  var target = e.target; // 获取事件触发元素
  var placeholder = target.getAttribute('placeholder'); // 获取输入框的 placeholder
  var value = target.value; // 获取输入框的值

  if (value == placeholder) { // 如果输入框的值等于 placeholder
    target.value = ''; // 把输入框的值设置为空
  }
}

function blurHandler(e) {
  var target = e.target; // 获取事件触发元素
  var placeholder = target.getAttribute('placeholder'); // 获取输入框的 placeholder
  var value = target.value; // 获取输入框的值

  if (value == '') { // 如果输入框的值为空
    target.value = placeholder; // 把输入框的值设置为 placeholder
  }
}

var input = document.getElementsByTagName('input')[0];
input.addEventListener('focus', focusHandler, true); // 委托 focus 事件到 input 上
input.addEventListener('blur', blurHandler, true); // 委托 blur 事件到 input 上

在上述代码中,我们首先定义了两个处理函数,一个在 input 输入框获得焦点时触发,另一个在输入框失去焦点时触发。然后,通过获取事件触发元素、输入框的 placeholder 和输入框的值,我们就可以判断输入框的状态,然后对输入框的值进行相应的操作。最后,我们通过 input 的委托 focus 和 blur 事件来实现对所有输入框的统一处理。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:javascript委托(Delegate)blur和focus用法实例分析 - Python技术站

(0)
上一篇 2023年6月15日
下一篇 2023年6月15日

相关文章

  • Spring Boot:Idea从零开始初始化后台项目的教程

    完整讲解”Spring Boot: Idea从零开始初始化后台项目的教程”的攻略可以分为以下几个步骤: 环境准备首先,需要准备好JDK、IDEA和Spring Boot。确保它们都已经安装在你的电脑上,并且配置好了环境变量。 创建Spring Boot项目在IntelliJ IDEA中创建一个新的Spring Boot项目,你可以选择它的版本和其他设置。接着…

    Java 2023年5月19日
    00
  • java 汉诺塔详解及实现代码

    Java 汉诺塔详解及实现代码攻略 汉诺塔是经典的递归算法题目,其背后的递归思想能够很好地帮助我们理解递归算法。本攻略将详细讲解Java实现汉诺塔的思路及代码实现,以及两个示例演示。 思路及示例演示 思路 该问题的本质是将$n$个圆盘从初始塔$A$借助辅助塔$B$移动到目标塔$C$。根据思考,我们可以发现它是递归结构,且满足以下三个条件: 如果只有一个圆盘,…

    Java 2023年5月23日
    00
  • 在Win10上安装Tomcat服务器及配置环境变量的详细教程(图文)

    在Win10上安装Tomcat服务器及配置环境变量的详细教程: 准备工作 官方网站下载Tomcat服务器压缩文件,例如tomcat-8.5.57.tar.gz 安装JDK,推荐版本为JDK8或JDK11,JDK11及以上版本,Tomcat需版本在9及以上 确认JDK环境变量已配置 安装Tomcat 解压Tomcat服务器压缩文件到指定目录。例如,将压缩文件解…

    Java 2023年5月19日
    00
  • Spring配置数据源流程与作用详解

    Spring配置数据源流程与作用详解 什么是数据源 在编写Java Web应用时,我们经常需要连接数据库。而Spring提供了JdbcTemplate等API帮助我们对数据库进行操作。但是在使用这些API之前我们需要先获得一个数据源(DataSource)对象。数据源是一个能够建立数据库连接的工厂,它将数据库的连接细节封装了起来,同时提供了有效,可重复的数据…

    Java 2023年5月19日
    00
  • JAVA ArrayList详细介绍(示例)

    下面是关于“JAVA ArrayList详细介绍(示例)”的完整攻略。 ArrayList介绍 在Java中,ArrayList是一个动态数组,可以根据需要动态地扩展其大小。与Java数组不同,在ArrayList中,项目的插入和删除时无需移动其他项目。ArrayList类在内部使用一个数组来存储它的元素,它的大小通过构造函数在创建时确定,如果在添加时元素的…

    Java 2023年5月26日
    00
  • 常见的Java ORM框架有哪些?

    Java ORM(Object-Relational Mapping)框架是用于简化Java应用程序与关系数据库之间的数据映射、数据管理和数据操作的工具,常见的Java ORM框架有以下几种: Hibernate:Hibernate是一个广泛应用的Java ORM框架,支持JPA(Java Persistence API)规范,其主要优点是开发效率高、功能强…

    Java 2023年5月11日
    00
  • 利用Java实现调用http请求

    以下是利用Java实现调用HTTP请求的完整攻略。 简介 在Java中,我们可以使用HttpURLConnection或者Apache HttpClient来实现HTTP请求。两者区别在于HttpURLConnection是内置于Java SDK中的,而Apache HttpClient是第三方库。以下分别讲解这两种方式的使用方法。 使用HttpURLCon…

    Java 2023年5月19日
    00
  • JVM钩子函数的使用场景详解

    当JVM进程结束时,可能存在一些资源需要释放或者状态需要保存。为了实现这样的目的,我们可以使用JVM钩子函数。 JVM钩子函数是一种回调函数,它可以在JVM进程终止前被执行。我们可以通过实现钩子函数来在程序结束时执行一些特定的操作,例如清理资源、保存状态和日志记录等。 JVM钩子函数的使用场景 通常情况下,JVM钩子函数可以用于以下场景: 清理资源 当JVM…

    Java 2023年5月26日
    00
合作推广
合作推广
分享本页
返回顶部