lost - cómo evitar que blur() se ejecute al hacer clic en un enlace en jQuery?
jquery text lost focus event (3)
Retrasa el desenfoque un poco. Si el espectador hace clic en un enlace a otra página, la página debe cambiar antes de que este código tenga la oportunidad de ejecutarse:
$(''input'').blur(function(){
setTimeout(function() {alert(''stay focused!'');}, 1000);
});
Puedes experimentar con qué valor de retardo para el tiempo de espera parece apropiado.
yo tengo:
<input type="text" />
y
$(''input'').blur(function(){
alert(''stay focused!'');
});
Quiero evitar que se ejecute la función de desenfoque cuando estoy "borroneando" haciendo clic en un elemento de anclaje.
IE, si tabulo a otra entrada, hago clic en alguna parte de la página, etc. quiero que se dispare la borrosidad, pero si hago clic en un enlace, no quiero que se dispare.
¿Es esto fácilmente realizable, o tengo que hackear con delegados y semáforos?
Gracias
Si desea mantener el cursor en su posición en un elemento contenteditable
, simplemente:
$(''button'').mousedown(function(){return false;});
Yo mismo tuve que resolver este problema hoy. Descubrí que el evento de mousedown se dispara antes del evento de desenfoque, por lo que todo lo que necesita hacer es establecer una variable que indique que un evento de mousedown se produjo primero, y luego administrar su evento de blur apropiadamente si es así.
var mousedownHappened = false;
$(''input'').blur(function() {
if(mousedownHappened) // cancel the blur event
{
alert(''stay focused!'');
$(''input'').focus();
mousedownHappened = false;
}
else // blur event is okay
{
// Do stuff...
}
});
$(''a'').mousedown(function() {
mousedownHappened = true;
});
¡¡Espero que esto te ayude!!