【js取消焦点】在前端开发中,有时候我们需要对页面中的输入框(如 ``、`
一、
在 JavaScript 中,可以通过 `blur()` 方法来移除某个元素的焦点。该方法会触发元素的 `blur` 事件,并将焦点从当前元素转移到文档的默认位置(通常是窗口本身)。如果需要在某些条件下自动取消焦点,例如表单验证失败后,可以结合事件监听器使用。
此外,还可以通过设置 `document.activeElement` 来手动控制当前焦点所在的元素。不过这种方法较为复杂,通常推荐使用 `element.blur()` 简洁地完成取消焦点的操作。
需要注意的是,某些浏览器可能对 `blur()` 的行为有不同处理方式,尤其是在动态生成的元素上,应确保元素已加载并具有正确的引用。
二、常见方法对比表格
| 方法 | 描述 | 是否常用 | 注意事项 |
| `element.blur()` | 调用元素的 `blur()` 方法,直接移除焦点 | ✅ 非常常用 | 需确保元素已加载且存在 |
| `document.activeElement.blur()` | 通过 `activeElement` 获取当前焦点元素并调用 `blur()` | ✅ 常用 | 可用于动态获取当前焦点元素 |
| `window.focus()` | 将焦点转移到窗口 | ❌ 不常用 | 一般不用于取消焦点 |
| `element.focus()` | 设置元素获得焦点 | ❌ 与取消焦点相反 | 用于主动设置焦点 |
| 手动设置 `tabindex="-1"` | 移除元素的可聚焦状态 | ✅ 有时使用 | 会影响键盘导航 |
三、示例代码
```javascript
// 示例1:直接调用 blur()
const input = document.querySelector('input');
input.blur();
// 示例2:通过 activeElement 移除焦点
document.activeElement.blur();
// 示例3:设置 tabindex="-1" 以防止聚焦
document.querySelector('button').setAttribute('tabindex', '-1');
```
四、适用场景
- 表单提交后清空输入框并移除焦点
- 用户操作后隐藏输入框时自动取消焦点
- 多个输入框切换时,确保只有一个元素保持焦点
- 在移动设备上优化用户交互体验
五、总结
JavaScript 中取消焦点的核心方法是 `blur()`,它简单高效,适用于大多数情况。同时,了解 `document.activeElement` 和 `tabindex` 的使用也能帮助我们更灵活地控制页面焦点行为。合理使用这些方法,有助于提升用户体验和页面交互的流畅性。


