使用Jquery / javascript
是:$(document).focus()?
答案 0 :(得分:34)
如果函数作为第一个参数传递,则jQuery包装元素上的.focus()
方法将绑定到onfocus
事件,或者触发没有参数的附加事件处理程序。
我不确定你为什么要尝试做你想要做的事情,但是如果你想模糊当前活动的元素,无论它是什么元素,你都可以使用:
if ("activeElement" in document)
document.activeElement.blur();
不建议这样做,因为这样做会重置标签顺序,并可能会惹恼键盘导航用户。
答案 1 :(得分:1)
$().method()
将触发与该方法关联的侦听器。如果需要在dom元素上调用函数,请为jQuery对象编制索引。
即
$(document)[0].focus()
虽然为什么你不仅仅使用document.focus
可能是一个值得回答的问题。
答案 2 :(得分:1)
可接受的答案在TypeScript中不起作用,因为document.activeElement
是Element
类型,而不是HTMLElement
,因此从技术上讲它不支持blur()
。下面的方法有点怪异,但可以正常工作。
改编自this answer:
const tmp = document.createElement('input');
document.body.appendChild(tmp);
tmp.focus();
document.body.removeChild();
答案 3 :(得分:0)
如果目标是消除对任何表单字段元素的关注,则可以使用以下方法:
$(':focus').blur();
如果没有jQuery,则可以使用纯JavaScript:
let elem = document.querySelector(':focus');
if(elem ) {
elem .blur();
}