web-dev-qa-db-fra.com

Comment sélectionner un élément qui a le focus avec jQuery

Comment pouvez-vous sélectionner un élément qui a le focus actuel?

Il n'y a pas de filtre :focus dans jQuery, c'est pourquoi nous pouvons utiliser quelque chose comme ceci:

$('input:focus').someFunction();
64
jQuery Lover

La meilleure façon de le faire consiste à configurer un gestionnaire pour l'événement onFocus, puis à définir une variable sur l'ID de l'élément qui a le focus.

quelque chose comme ça:

var id;

$(":input").focus(function () {
     id = this.id;
});
32
Mike_G

$(document.activeElement) retournera l'élément actuellement ciblé et sera plus rapide que d'utiliser le pseudo sélecteur: focus.

Source: http://api.jquery.com/focus-selector/

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

J'utilise jQuery.

Cela alertera l'identifiant de l'élément se concentrant.

J'espère que cela vous sera utile.

123
BiBi

As-tu essayé

$.extend($.expr[':'], {
    focused: function(elem) { return elem.hasFocus; }
});

alert($('input :focused').length);
5
bendewey

Si vous utilisez JQuery, vous pouvez écrire un sélecteur comme ceci :

$.expr[':'].focus = function(a){ return (a == document.activeElement); }

Vous pouvez ensuite sélectionner l'élément actuellement ciblé: $(":focus")

Non seulement les contrôles de formulaire peuvent avoir le focus. Tout élément html avec un tabindex peut être ciblé dans les navigateurs modernes.

5
jmanrubia

Tiré des exemples de la version actuelle de jQuery (1.7) docs:

$(elem).is(":focus");
4
TurboHz

Pour vérifier l'élément a le focus ou non.

if ($("...").is(":focus")) {
  ...
}
1
Somnath Muluk

Voici la version CoffeeScript de celui-ci. Basé sur le code de jmanrubia:

$.expr[':'].focus = (a) -> a is document.activeElement

Vous voudriez aussi l'appeler comme ça $(".:focus")

0
Hengjie