Wie kann ich mithilfe von jQuery das Eingabeelement mit dem Fokus des Cursors (Cursor) abrufen?Wie bekomme ich das fokussierte Element mit jQuery?
Oder mit anderen Worten, wie zu bestimmen, ob eine Eingabe den Fokus der Einfügemarke hat?
Wie kann ich mithilfe von jQuery das Eingabeelement mit dem Fokus des Cursors (Cursor) abrufen?Wie bekomme ich das fokussierte Element mit jQuery?
Oder mit anderen Worten, wie zu bestimmen, ob eine Eingabe den Fokus der Einfügemarke hat?
// Get the focused element:
var $focused = $(':focus');
// No jQuery:
var focused = document.activeElement;
// Does the element have focus:
var hasFocus = $('foo').is(':focus');
// No jQuery:
elem === elem.ownerDocument.activeElement;
Welches sollte man als empfohlen suchen zu müssen? unter Angabe des jQuery docs:
Wie bei anderen pseudo-Klassen-Selektoren (jene, die mit einem beginnen „:“), es vorangehen werden empfohlen: mit einem Tag-Namen oder einem anderen Wähler Fokus; Andernfalls wird der universelle Selektor ("*") impliziert. Mit anderen Worten, die blanke
$(':focus')
entspricht$('*:focus')
. Wenn Sie nach dem aktuell fokussierten Element suchen, ruft $ (document.activeElement) es ab, ohne die gesamte DOM-Struktur durchsuchen zu müssen.
Die Antwort lautet:
document.activeElement
Und wenn Sie das Element ein jQuery-Objekt Einwickeln wollen:
$(document.activeElement)
aber warte, wie bekomme ich das Element, das das Caret hat? – dave
@dave. Was meinst du _ "hat den Caret" _? fokussiert? Die Maus ist drauf? – gdoron
Nun, hier ist meine Situation: Wenn ich auf ein bestimmtes Element klicke, möchte ich ein Zeichen in das letzte fokussierte Eingabetextelement einfügen. Im Grunde genommen das Element, das den letzten oder richtigen Fokus hatte, bevor dieses Element angeklickt wurde. – dave
$(document.activeElement)
Wird es abrufen, ohne den gesamten DOM-Baum auf der Verwendung jQuery documentation
Wie bekomme ich Element, das das Caret hat? – dave
Versuchen Sie folgendes:
$(":focus").each(function() {
alert("Focused Elem_id = "+ this.id);
});
Ja, deshalb wird diese Schleife nur eine Iteration haben. Alarm ist nur um das Beispiel zu demonstrieren. Wenn Sie diese Variable haben, können Sie alles mit dem Element, das Sie möchten. –
Wie ist es möglich, mehr als ein Element zu fokussieren? –
@AndreasFurster du hast Recht. In dieser Schleife wird es immer nur eine Iteration geben. Dies ist möglicherweise nicht der beste Weg, um das Ziel zu erreichen, aber es funktioniert. –
Ich habe zwei getestet Möglichkeiten in Firefox, Chrome, IE9 und Safari.
(1). $(document.activeElement)
funktioniert wie erwartet in Firefox, Chrome und Safari.
(2). $(':focus')
funktioniert wie erwartet in Firefox und Safari.
Ich bewegte in die Maus, um 'Name' einzugeben und drückte auf der Tastatur Enter, dann versuchte ich, das fokussierte Element zu erhalten.
(1). $(document.activeElement)
gibt die Eingabe zurück: text: Name wie erwartet in Firefox, Chrome und Safari, aber es gibt die Eingabe zurück: submit: addPassword in IE9
(2). $(':focus')
kehrt Eingabe: Text: Name wie erwartet in Firefox und Safari, aber nichts in IE
<form action="">
<div id="block-1" class="border">
<h4>block-1</h4>
<input type="text" value="enter name here" name="name"/>
<input type="button" value="Add name" name="addName"/>
</div>
<div id="block-2" class="border">
<h4>block-2</h4>
<input type="text" value="enter password here" name="password"/>
<input type="submit" value="Add password" name="addPassword"/>
</div>
</form>
Wie wird es niemand erwähnt hat ..
document.activeElement.id
ich IE8 benutze und habe es nicht getestet auf einem anderen Browser. In meinem Fall verwende ich es, um sicherzustellen, dass ein Feld mindestens 4 Zeichen umfasst und fokussiert ist, bevor es wirkt. Sobald Sie die 4. Nummer eingeben, wird es ausgelöst. Das Feld hat eine ID von "Jahr". Ich benutze ..
if($('#year').val().length >= 4 && document.activeElement.id == "year") {
// action here
}
Mögliche doppelte http://stackoverflow.com/questions/967096/using-jquery-to-test-if-an-input-has-focus –
Mögliche doppelte: http: // stackoverflow.com/questions/516152/how-to-select-an-element-that-has-focus-on-it-with-jquery/9875020#9875020 –