8
votes

Trouvez si une zone de texte est actuellement sélectionnée

Comment puis-je trouver si une zone de texte (ou Textarea) est-elle actuellement mise au point? Je ne me soucie pas de savoir lequel c'est-à-dire que je dois juste savoir si on se concentre (a le curseur dedans). Comment ferais-je cela avec JavaScript et JQuery?


0 commentaires

5 Réponses :


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

6 commentaires

OK, mais à tout moment (pas nécessairement lorsque l'utilisateur clique sur une zone de texte) Comment vérifierais-je si une zone de texte a la focalisation?


Étant donné que l'OP ne se soucie pas de "Lequel c'est", je suggérerais de modifier le sélecteur de: $ ('Textarea: Focus, entrée: Texte: Focus') ...


Je viens de trouver un document.ActiveLement. Comment puis-je vérifier si c'est une zone de texte ou une textarea?


@David merci, c'est plus propre.


Je ne reconnais pas le : focus pseudo-sélecteur et l'API ou un test rapide ...


@LonesomeDay, Catch intéressant: puisqu'il travaille sous CSS, je n'ai jamais pensé demander si elle a fonctionné ou non sous JQuery.



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

1 commentaires

Comme @Lonesome a souligné ci-dessus,: Survol n'est pas un vrai sélecteur de jQuery. Je pensais que c'était aussi, mais quand j'ai vérifié la documentation, je ne pouvais pas le trouver mentionné.



20
votes

Étant donné que vous avez trouvé document.activeelement , vous pouvez vérifier son nom nodename. xxx

quelque chose comme ça.


2 commentaires

Merci, mais comment puis-je obtenir l'objet JQuery de Document.ActiveElement?


Cela ne vérifie pas les htllivelements modifiables. Voir ma réponse ci-dessous.



7
votes

OK, je suis juste compris. Voici ce que j'ai fait: xxx


3 commentaires

Quelqu'un marque ceci comme réponse, il dit que je dois attendre 2 jours. :)


Vous êtes le seul à peut marquer cela comme réponse. Aussi, jetez un coup d'œil au Helpdown de dépassement de pile , pour obtenir des conseils sur la manière de formater vos réponses, en particulier des échantillons de code.


Notez que cela fonctionnera sur tous les navigateurs modernes, mais ce sera pas travailler sur de nombreux navigateurs obsolètes. Jetez un coup d'œil à cette réponse pour une technique pour surmonter cela.



2
votes

Extension de la réponse acceptée par une vérification des HTMLDivelements modifiables:

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


0 commentaires