当前位置: 首页 > article >正文

JavaScript的聚焦:focus/blur

🧑‍🎓 个人主页:《爱蹦跶的大A阿》

🔥当前正在更新专栏:《VUE》 、《JavaScript保姆级教程》、《krpano》、《krpano中文文档》

​ 

✨ 正文

一、简介

focusblur 事件是 HTML 元素的重要事件,用于检测元素是否获得或失去焦点。

二、focus 事件

当用户将焦点移动到元素上时,会触发 focus 事件。

代码示例

<input type="text" id="name" onfocus="alert('获得焦点')">

三、blur 事件

当用户将焦点移出元素时,会触发 blur 事件。

代码示例

<input type="text" id="name" onblur="alert('失去焦点')">

四、事件处理程序

可以使用 addEventListener() 方法为元素添加 focusblur 事件处理程序。

代码示例

document.getElementById("name").addEventListener("focus", function() {
  alert("获得焦点");
});

document.getElementById("name").addEventListener("blur", function() {
  alert("失去焦点");
});

五、阻止事件传播

可以使用 stopPropagation() 方法阻止事件传播。

代码示例

document.getElementById("name").addEventListener("focus", function(event) {
  event.stopPropagation();
  alert("获得焦点");
});

相关属性

  • tabIndex:用于指定元素的焦点顺序。
  • autofocus:用于指定元素是否自动获得焦点。

更多信息

  • HTML Focus Event: FocusEvent - Web APIs | MDN: FocusEvent - Web APIs | MDN
  • HTML Blur Event: <移除了无效网址>: <移除了无效网址>

六、代码示例

使用 focusblur 事件来验证表单输入

<form action="/action_page.php">
  <input type="text" name="name" id="name" onfocus="validateName()" onblur="validateName()">
  <input type="submit" value="Submit">
</form>

<script>
function validateName() {
  var name = document.getElementById("name").value;

  if (name === "") {
    alert("Please enter your name");
    return false;
  }

  return true;
}
</script>

使用 focusblur 事件来控制元素的可见性

<div id="message">
  Please enter your name.
</div>

<input type="text" id="name" onfocus="hideMessage()" onblur="showMessage()">

<script>
function hideMessage() {
  document.getElementById("message").style.display = "none";
}

function showMessage() {
  document.getElementById("message").style.display = "block";
}
</script>

✨ 结语

        focusblur 事件是用于检测元素是否获得或失去焦点的重要事件。它们可以用于各种目的,例如验证表单输入、控制元素的可见性等等。

希望本文对你有所帮助!

以下是一些额外的建议:

  • 阅读 HTML 和 JavaScript 文档,以了解更多关于 focus 和 blur 事件的信息。
  • 练习使用 focus 和 blur 事件来实现不同的功能。
  • 在实际项目中使用 focus 和 blur 事件。

祝你学习愉快!


http://www.kler.cn/news/234225.html

相关文章:

  • Acwing 5469. 有效点对【正难则反+巧妙选择根节点】
  • Netty应用(四) 之 Reactor模型 零拷贝
  • 【算法】排序详解(快速排序,堆排序,归并排序,插入排序,希尔排序,选择排序,冒泡排序)
  • OpenCV-32 膨胀操作
  • 2024PMP考试新考纲-近年PMP真题练一练和很详细解析(3)
  • 【java】简单的Java语言控制台程序
  • golang select两个channel性能稳定,三个channel时性能会发生抖动,为什么?
  • (c语言版)数组去重和排序 题目描述: 给定一个乱序的数组,删除所有的重复元素,使得每个元素只出现一次,并且按照出现的次数从高到低
  • 设计模式-行为型模式(下)
  • 七、热身仪式(Warm-Up Rituals)
  • 《杨绛传:生活不易,保持优雅》读书摘录
  • Github 2024-02-10 开源项目日报Top10
  • Flink面试准备
  • 代码随想录算法训练营第三十三天丨[重看] 最大子数组、1143. 最长公共子序列/15.4 最长公共子序列
  • Android 识别车牌信息
  • Rust 格式化输出
  • TestNG基础教程
  • fast.ai 机器学习笔记(二)
  • JVM-类加载器 双亲委派机制
  • 项目02《游戏-13-开发》Unity3D
  • 在 Windows上恢复删除照片的 4 种有效方法
  • 初步探索Pyglet库:打造轻量级多媒体与游戏开发利器
  • 多维时序 | Matlab实现RF-Adaboost随机森林结合Adaboost多变量时间序列预测
  • hexo 博客搭建以及踩雷总结
  • 面向对象编程:理解其核心概念与应用
  • linux上部署ftp服务
  • MongoDB聚合:$replaceWith
  • visual studio和cmake如何编译dlib库
  • 深入了解 MySQL 数值型函数
  • Linux文本三剑客(2)