Find if a textbox is currently selected

2020-03-16 12:07发布

问题:

How would I find if a textbox (or textarea) currently is in focus? I don't care to know which one it is, I just need to know if one is in focus (has the cursor in it). How would I do this with javascript and jquery?

回答1:

Since you have found document.activeElement, you can check its nodeName.

if (document.activeElement.nodeName == 'TEXTAREA' || document.activeElement.nodeName == 'INPUT') {
    // ....
}

Something like that.



回答2:

Ok, just figured it out. Here's what I did:

function checkFocus() {

  if ($(document.activeElement).attr("type") == "text" || $(document.activeElement).attr("type") == "textarea") {

  //Something's selected

  return true;

 }

}


回答3:

$('#yourTextAreaID:focus'); 

would not work. :) But

$('#yourTextAreaID').focus(function(){
    // do something
});

would excecute the //do something code when the element receives focus.



回答4:

Extending the accepted answer by a check for editable HTMLDivElements:

if (document.activeElement.nodeName == 'TEXTAREA'
    || document.activeElement.nodeName == 'INPUT'
    || (document.activeElement.nodeName == 'DIV'
        && document.activeElement.isContentEditable)) {
    // …
}


回答5:

$('#target').focus(function() {
  alert('Handler for .focus() called.');
});

Also Try:

alert($("*:focus").attr("id"));

http://jsfiddle.net/4KVvV/