如何使用javascript在文本框上触发焦点事件?

如何使用javascript在文本框上触发焦点事件?,javascript,focus,eventtrigger,Javascript,Focus,Eventtrigger,如何使用javascript在文本框上触发焦点事件 例如,在jQuery中,我们可以使用$('#textBox').focus()触发焦点事件 同样,我们在纯javascript中是否有类似的触发器功能?是的,可以使用元素.focus() 函数myFunction(x){ x、 style.background=“黄色”; } 函数focusText(){ document.getElementById(“textBox”).focus(); } 输入您的姓名: 当输入字段获得焦点时,会触发

如何使用javascript在文本框上触发焦点事件

例如,在jQuery中,我们可以使用
$('#textBox').focus()触发焦点事件


同样,我们在纯javascript中是否有类似的触发器功能?

是的,可以使用
元素.focus()

函数myFunction(x){
x、 style.background=“黄色”;
} 
函数focusText(){
document.getElementById(“textBox”).focus();
}
输入您的姓名:
当输入字段获得焦点时,会触发一个改变背景颜色的函数


聚焦文本框非常简单:
Element.Focus()

这不会触发onfocus事件如果需要,请参阅Greg的答案


最后,我不得不处理这个问题,并想出了一个跨浏览器工作的方法:

function triggerFocus(element) {
    var eventType = "onfocusin" in element ? "focusin" : "focus",
        bubbles = "onfocusin" in element,
        event;

    if ("createEvent" in document) {
        event = document.createEvent("Event");
        event.initEvent(eventType, bubbles, true);
    }
    else if ("Event" in window) {
        event = new Event(eventType, { bubbles: bubbles, cancelable: true });
    }

    element.focus();
    element.dispatchEvent(event);
}
它考虑到一些浏览器支持
focusin
事件,而一些浏览器只支持
focus
事件。它使用本机的
focus
功能设置焦点,然后根据浏览器支持的内容发送“focusin”事件或“focus”事件

测试地点:

  • 火狐62
  • 铬69
  • InternetExplorer11(是的,是的。我知道。不过我们必须在工作中支持它)
  • 微软边缘15
使用它:

var foo = document.getElementById("foo");

triggerFocus(foo);

这是通用的,应该与任何可以接收焦点的元素一起使用。

直播onfocus事件,也许,“根未定义”什么是根???@beliha:很抱歉。我的代码有一个输入错误,我改正了。它应该是
元素
。这应该是公认的答案,这是唯一有效的方法@法赫米,我也这么想!我想我知道为什么:
Element.focus()
不会触发
onfocus
事件,至少在我的测试中是这样。Greg建议的
dispatchEvent
方法会触发焦点事件。这也不会触发焦点事件。上述代码段是否不会触发文本框的onfocus侦听器
myFunction()
?本机
focus
函数将焦点设置为元素,但不会触发事件中的焦点或焦点。想象一下,如果一个onfocus再次将焦点设置在同一个元素上,它会触发焦点事件,它会执行onfocus,它会触发焦点事件。。。创建递归函数调用很容易。
var foo = document.getElementById("foo");

triggerFocus(foo);