validar unfocus trigger quitar perder foco evento event ejemplos javascript jquery events javascript-events onblur

javascript - unfocus - trigger blur event jquery



Obtener el objeto cliqueado que activó jquery blur() evento (4)

Dentro de un controlador de eventos, this será el elemento al que está vinculado el evento, y e.target será el elemento que desencadenó el evento (puede o no ser el mismo que this ).

Está entregando un evento de blur , no un evento de click . Entonces, dentro de tu evento, tendrás el elemento que blur . Si desea el elemento click ed, necesitaría otro evento para obtenerlo.

blur puede ser desencadenado por otros eventos, como enfocar algo; no solo haciendo clic en algo. Entonces, no hay forma de obtener el elemento que "causó el desenfoque".

Supongamos que hago esto:

$(target).blur(function(e){ //do stuff });

¿Hay alguna manera de recuperar el objeto que se hizo clic para activar la acción de desenfoque?

Intenté usar e.target , pero parece que devuelve el objeto adjunto a la acción de desenfoque en lugar del objeto cliqueado.


El truco es esperar un tic:

$(el).blur(function (event) { // If we just hangout an extra tick, we''ll find out which element got focus really setTimeout(function(){ document.activeElement; // This is the element that has focus },1); })


Si entiendo tu pregunta correctamente, esto debería hacerlo:

$(function() { var clicky; $(document).mousedown(function(e) { // The latest element clicked clicky = $(e.target); }); // when ''clicky == null'' on blur, we know it was not caused by a click // but maybe by pressing the tab key $(document).mouseup(function(e) { clicky = null; }); $(target).blur(function(e) { console.log(clicky); });​​ });


Usar esto dentro de la función del controlador de blur le dará el elemento blured .

$(target).blur(function(e){ var bluredElement = this; // dom element // To make a jQuery object var bluredElement = $(this); });

Dentro del evento de blur no puede captar el elemento cliqueado. Para obtener el elemento click ed, necesita click evento. Por ejemplo:

$(element).click(function() { var clickedElement = this; });

Y para obtener el elemento enfocado, puede usar :focus selector de :focus como: $('':focus'') le devolverá el elemento enfocado en el documento.