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