javascript - 如何在不实际聚焦元素的情况下触发焦点处理程序?
问题描述
jQuery 像这样启用它:
$( "input" ).triggerHandler( "focus" );
如果没有 jQuery,我怎样才能达到同样的效果?
解决方案
您在要触发dispatchEvent
的元素上使用。请参阅此处focus
的文档和示例。
const event = new FocusEvent('focus', {
view: window,
bubbles: true,
cancelable: true
});
const myInput = document.getElementById('myInput');
myInput.dispatchEvent(event);
#myInput:focus {
background: red;
}
<input id="myInput" type="text" onfocus="console.log('Input focused!');"/>
在上面的代码中可以看到,console.log
语句是根据绑定到input
标签的事件来运行的,但是元素实际上并没有被聚焦(因为否则输入框会是红色的,你可以点击它来尝试)。
推荐阅读
- r - 访问通过模块创建的数据框及其名称并将它们存储在列表中
- r - 我在 R 中的 performanceAnalytics 包中的 performanceSummary 图表有问题
- javascript - 如何通过模拟选择器和/或 redux store 来编写 Redux Saga 测试
- docker - 当有多个摘要的标签时,docker pull 如何工作(用于 os/arch)
- java - 从 python 服务器发送到 java 客户端的定时数据
- sql - 列出 SQL Server 中的数据库并跳过 master
- .net - 以编程方式修复“Word 在损坏的...中发现不可读的内容”
- java - 将此字符串转换为字符串数组的最佳方法是什么?
- html - 如何使页脚内容全部位于页脚的中心?
- javascript - 更改 swiper 对象参数