如何在不实际聚焦元素的情况下触发聚焦处理程序?

时间:2019-03-15 15:41:21

标签: javascript

jQuery启用它的方式如下:

$( "input" ).triggerHandler( "focus" );

在没有jQuery的情况下如何实现相同的目标?

https://api.jquery.com/triggerHandler/

2 个答案:

答案 0 :(得分:1)

您在要触发dispatchEvent的元素上使用focus。见 文档和示例here

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标记的绑定事件运行的,但是该元素实际上并未聚焦(因为否则输入框将是红色,您可以通过点击尝试)。

答案 1 :(得分:0)

使用getEventListeners(node)函数

在您的情况下: console.log(getEventListeners(document.getElementsByTagName('input')[0]));

您将获得所有侦听器,然后可以过滤附加到focus事件的侦听器