jQuery:如何知道input元素是否具有焦点

Den*_*gin 12 javascript jquery focus jquery-ui

我正在开发一个可以使用键盘控制的应用程序(游戏).问题是它还包含一些默认的输入元素(如登录表单字段).为了防止游戏在用户输入凭证时对按键做出反应,我会做一个检查:

if (isDef($("*:focus").attr("id")))
    return;
Run Code Online (Sandbox Code Playgroud)

它几乎适用于所有主流浏览器,但IE浏览器.在Internet Explorer中,div也可以专注于它们,几乎在每种情况下,页面上的某些元素都集中在它上面.因此,我想检查一些元素是否具有焦点,但是一些可以接受键盘输入的元素具有焦点.在我的情况下,它仅限于textarea或输入.如何检查这两种类型的元素是否具有焦点?

Vib*_* TV 32

您可以通过使用jQuery的容易做到这一点表达.

if($("input,textarea").is(":focus")){
//input and text area has focus
}
else{
//no focus for input and textarea
}    
Run Code Online (Sandbox Code Playgroud)

如果您只想检查文本框焦点而不是每个输入元素,则使用input ['text']更改输入


Tom*_*lak 9

if ( $("*:focus").is("textarea, input") ) return;
Run Code Online (Sandbox Code Playgroud)


Ste*_*ain 8

欢迎来到2015年,在这里你不需要jQuery这种东西.Vanilla JS支持HTMLELement.matches(Query:String)

所以我们可以做点什么,

var el = document.getElementById("El")
if(el.matches(":focus")) // true or false (You can use other CSS selectors too)
Run Code Online (Sandbox Code Playgroud)