Utilizzando jQuery, come posso ottenere l'elemento di input che ha lo stato attivo del cursore (cursore)?
O in altre parole, come determinare se un input ha il focus del cursore?
Utilizzando jQuery, come posso ottenere l'elemento di input che ha lo stato attivo del cursore (cursore)?
O in altre parole, come determinare se un input ha il focus del cursore?
Risposte:
// 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;
Quale dovresti usare? citando i documenti jQuery :
Come con altri selettori di pseudo-classe (quelli che iniziano con un ":"), si consiglia di precedere: focus con un nome di tag o qualche altro selettore; in caso contrario, il selettore universale ("*") è implicito. In altre parole, il nudo
$(':focus')
è equivalente a$('*:focus')
. Se stai cercando l'elemento attualmente focalizzato, $ (document.activeElement) lo recupererà senza dover cercare nell'intero albero DOM.
La risposta è:
document.activeElement
E se vuoi un oggetto jQuery che avvolge l'elemento:
$(document.activeElement)
$focused
, poiché suppongo che lo faccia per indicare che var è un oggetto jquery. TYVM.
$( document.activeElement )
Lo recupererà senza dover cercare nell'intero albero DOM come raccomandato nella documentazione di jQuery
Ho testato due modi in Firefox, Chrome, IE9 e Safari.
(1). $(document.activeElement)
funziona come previsto in Firefox, Chrome e Safari.
(2). $(':focus')
funziona come previsto in Firefox e Safari.
Mi sono spostato nel mouse per inserire "nome" e ho premuto Invio sulla tastiera, quindi ho cercato di ottenere l'elemento focalizzato.
(1). $(document.activeElement)
restituisce l'input: text: name come previsto in Firefox, Chrome e Safari, ma restituisce input: submit: addPassword in IE9
(2). $(':focus')
restituisce input: testo: nome come previsto in Firefox e Safari, ma nulla 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>
Prova questo:
$(":focus").each(function() {
alert("Focused Elem_id = "+ this.id );
});
.each
non resistere)
Come mai nessuno ha menzionato ...
document.activeElement.id
Sto usando IE8 e non l'ho provato su nessun altro browser. Nel mio caso, lo sto usando per assicurarsi che un campo abbia un minimo di 4 caratteri e sia focalizzato prima di recitare. Una volta inserito il 4 ° numero, si innesca. Il campo ha un ID di "anno". Sto usando..
if( $('#year').val().length >= 4 && document.activeElement.id == "year" ) {
// action here
}
$(':focus')[0]
ti darà l'elemento reale.
$(':focus')
ti fornirà una serie di elementi, di solito viene focalizzato solo un elemento alla volta, quindi è meglio solo se hai in qualche modo focalizzato più elementi.
Prova questo::
$(document).on("click",function(){
alert(event.target);
});
Se vuoi confermare se lo stato attivo è con un elemento allora
if ($('#inputId').is(':focus')) {
//your code
}