JavaScript blur() 方法
最后修改于 2025 年 4 月 2 日
在本文中,我们将探讨 JavaScript 中的 blur()
方法。此方法可从当前元素移除键盘焦点,这对于创建直观的用户界面和表单处理至关重要。
基本定义
blur()
方法可从当前元素移除键盘焦点。它通常与输入框、按钮和链接等表单元素一起使用,以编程方式控制焦点行为。
当元素失去焦点时,会触发 blur
事件。此方法相当于用户在页面其他位置单击的操作。
基本 blur() 示例
此示例演示了如何使用 blur() 从输入字段中移除焦点。
<!DOCTYPE html> <html> <head> <title>Basic blur() Example</title> </head> <body> <input type="text" id="myInput" placeholder="Click then blur"> <button onclick="removeFocus()">Remove Focus</button> <script> function removeFocus() { const input = document.getElementById('myInput'); input.blur(); } </script> </body> </html>
在这个基本示例中,我们有一个输入字段和一个按钮。当单击按钮时,将调用 removeFocus
函数,该函数使用 blur()
从输入字段中移除焦点。
这演示了 blur()
控制焦点行为的基本用法。该方法在当前具有焦点的元素对象上调用。
使用 blur() 进行表单验证
此示例演示了在离开字段时如何使用 blur() 进行表单验证。
<!DOCTYPE html> <html> <head> <title>Form Validation</title> <style> .error { border: 2px solid red; } </style> </head> <body> <input type="email" id="email" placeholder="Enter email"> <p id="error" style="color:red"></p> <script> const emailInput = document.getElementById('email'); const errorMsg = document.getElementById('error'); emailInput.addEventListener('blur', function() { if (!this.value.includes('@')) { this.classList.add('error'); errorMsg.textContent = 'Please enter a valid email'; } else { this.classList.remove('error'); errorMsg.textContent = ''; } }); </script> </body> </html>
在此,我们在电子邮件输入框失去焦点时对其进行验证。blur
事件监听器会检查输入内容是否包含“@”符号,如果没有则显示错误。
这演示了 blur
事件如何触发验证。如果需要,实际的 blur()
方法将用于强制进行验证。
防止焦点劫持
此示例演示了如何使用 blur() 来防止弹出窗口劫持焦点。
<!DOCTYPE html> <html> <head> <title>Prevent Focus Stealing</title> <style> #modal { display: none; position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%); padding: 20px; background: white; border: 1px solid #ccc; } </style> </head> <body> <button id="openModal">Open Modal</button> <div id="modal"> <h3>Important Message</h3> <p>Please read this carefully</p> <button id="closeModal">Close</button> </div> <script> const openBtn = document.getElementById('openModal'); const modal = document.getElementById('modal'); const closeBtn = document.getElementById('closeModal'); openBtn.addEventListener('click', function() { modal.style.display = 'block'; openBtn.blur(); // Remove focus from the triggering button }); closeBtn.addEventListener('click', function() { modal.style.display = 'none'; }); </script> </body> </html>
在此示例中,单击“打开模态框”按钮会显示一个模态对话框,同时使用 blur()
从按钮中移除焦点。这样可以防止按钮在打开模态框后保持焦点。
此技术通过确保焦点不会“卡在”隐藏或非活动元素上,从而提高了可访问性。这是模态框实现中的常见模式。
自定义下拉菜单与 blur()
此示例演示了如何创建在失去焦点时关闭的自定义下拉菜单。
<!DOCTYPE html> <html> <head> <title>Custom Dropdown</title> <style> .dropdown { position: relative; display: inline-block; } .dropdown-content { display: none; position: absolute; background: #f9f9f9; min-width: 160px; box-shadow: 0 8px 16px rgba(0,0,0,0.2); z-index: 1; } .dropdown:hover .dropdown-content { display: block; } </style> </head> <body> <div class="dropdown" tabindex="0"> <button>Select Option</button> <div class="dropdown-content"> <a href="#">Option 1</a> <a href="#">Option 2</a> <a href="#">Option 3</a> </div> </div> <script> const dropdown = document.querySelector('.dropdown'); dropdown.addEventListener('blur', function() { this.querySelector('.dropdown-content').style.display = 'none'; }); </script> </body> </html>
在此,我们创建了一个自定义下拉菜单,当它失去焦点时会关闭。blur
事件监听器会在焦点移出下拉菜单容器时隐藏下拉菜单内容。
这演示了 blur
事件如何帮助管理交互式组件。tabindex
属性使 div 可聚焦。
单页应用中的焦点管理
此示例演示了如何在 SPA 中使用 blur() 来更好地管理焦点。
<!DOCTYPE html> <html> <head> <title>SPA Focus Management</title> </head> <body> <nav> <button id="home">Home</button> <button id="about">About</button> <button id="contact">Contact</button> </nav> <div id="content">Home Content</div> <script> const navButtons = document.querySelectorAll('nav button'); const contentDiv = document.getElementById('content'); navButtons.forEach(button => { button.addEventListener('click', function() { // Remove focus from all nav buttons navButtons.forEach(btn => btn.blur()); // Update content based on clicked button contentDiv.textContent = `${this.textContent} Content`; }); }); </script> </body> </html>
在这个类似 SPA 的示例中,单击导航按钮会更新内容,同时移除所有按钮的焦点。这可以防止焦点指示器保留在非活动导航项上。
此技术通过在导航操作后清理焦点状态,从而改善了单页应用程序的用户体验。对于键盘用户来说尤其有用。
来源
在本文中,我们展示了如何在 JavaScript 中使用 blur()
方法。此方法对于控制焦点行为以及创建可访问、用户友好的界面至关重要。
作者
列出 所有 JS DOM 教程。