2011-01-01 20 views
6

Wie würde ich feststellen, ob eine Textbox (oder Textbereich) gerade im Fokus ist? Es ist mir egal, welche es ist, ich muss nur wissen, ob man scharf ist (hat den Cursor darin). Wie würde ich das mit Javascript und jquery tun?Suchen, ob eine Textbox ausgewählt ist

Antwort

15

Da Sie document.activeElement gefunden haben, können Sie seine nodeName überprüfen.

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

So ähnlich.

+0

Danke, aber wie bekomme ich das jQuery-Objekt von document.activeElement? –

+1

$ (document.activeElement) –

+0

Dies prüft nicht, ob editierbare HTMLDivElements vorhanden sind. Siehe meine Antwort unten. –

2
$('#yourTextAreaID:focus'); 

würde nicht funktionieren. :) Aber

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

würde excecute den //do something Code, wenn das Element den Fokus erhält. Versuchen

+0

Ok, aber zu einem bestimmten Zeitpunkt (nicht neccesarily, wenn der Benutzer ein Textfeld klickt) wie würde ich prüfen Wenn ein Textfeld den Fokus hat? –

+0

Da es dem OP egal ist, "welches ist es", würde ich vorschlagen, den Selektor zu ändern: '$ ('textarea: focus, input: text: focus') ...' –

+0

Ich habe gerade ein Dokument gefunden. AktivesElement. Wie überprüfe ich, ob das eine Textbox oder ein Textfeld ist? –

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

auch:

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

http://jsfiddle.net/4KVvV/

+0

wie @ lonesome oben gezeigt,: Hover ist kein echter Jquery-Selektor. Ich dachte es wäre auch, aber als ich die Dokumentation überprüfte, konnte ich es nicht erwähnt finden. – JakeParis

6

Ok, habe es herausgefunden. Hier ist, was ich getan habe:

function checkFocus() { 

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

    //Something's selected 

    return true; 

} 

} 
+0

Jemand markiert dies als die Antwort, es heißt, ich muss 2 Tage warten. :) –

+2

du bist der einzige, der * dies * als Antwort markieren kann. Werfen Sie auch einen Blick auf die [Stack Overflow Markdown Hilfeseite] (http://stackoverflow.com/editing-help/), um Anleitungen zum Formatieren Ihrer Antworten, insbesondere Codebeispiele, zu erhalten. –

+0

Beachten Sie, dass dies auf allen modernen Browsern funktioniert, aber nicht auf vielen veralteten Browsern. Werfen Sie einen Blick auf [diese Antwort] (http://stackoverflow.com/questions/1009777/determining-which-element-has-focus/1009787#1009787) für eine Technik, um dies zu überwinden. – lonesomeday

2

Erweiterung der akzeptierten Antwort durch einen Scheck über editierbare HTMLDivElements:

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