2010-09-03 17 views
5

Esto es lo que quiero hacer. Quiero activar un evento cada vez que cambia un elemento seleccionado. Tengo una selección de líneas múltiples y cuando realizo cambios (haga clic en elementos), no cambia hasta que el cuadro de selección pierde el foco. Así que estoy tratando de forzar una imagen borrosa cada vez que se hace clic en la casilla de selección. De esta forma, si cambia, activará el evento modificado. Si no cambia, nada sucederá.¿Cómo forzar un evento de desenfoque en JavaScript?

¿Cómo puedo hacer esto? ¿Me estoy acercando a esto de la manera correcta? Las respuestas de Jquery también están bien.

+1

Si hace esto, va a cabrear a aquellos que usan el teclado para navegar a través de las opciones de la lista de selección. –

+1

@Roatin, eso depende. Si está cambiando una clase de etiqueta, no biggy, si está lanzando una alerta ...;) – Marc

Respuesta

1

Está bien, esto es lo que estaba pasando. Estaba incluyendo la versión -vsdoc de JQuery en lugar de la biblioteca JQuery real. Esto también soluciona algunos problemas que estaba teniendo con algunos complementos como blockUI.

+0

Para aclarar, NO quiere incluir el -vsdoc. Esto debe usarse solo para intellisense. –

1

Puede adjuntar un controlador onclick a la selección y a las opciones individuales. básicamente onclick="this.blur();". Siempre he encontrado que hacer clic en eventos en los elementos <select> es una molestia, ya que no sucede nada en el punto que usted espera.

3

Usando jQuery hacer:

$('#mySelectBox').change(function() { 
    //do things here 
}); 

De acuerdo con la documentación en http://api.jquery.com/change/, el evento se activa inmediatamente cuando el usuario realiza una selección.

Compruebe hacia fuera esta prueba para comprobar que esto funciona: http://jsfiddle.net/AHM8j/

+1

Sí. Este es el evento que el OP debería estar escuchando. –

+0

Esto podría no suceder en IE. IE es notoriamente malo con el evento 'change'. http://stackoverflow.com/questions/1637503/jquery-change-event-on-select-not-firing-in-ie –

+0

Esa demostración que proporcioné me parece estar trabajando en IEs 6-8. Además, de la documentación provista: "A partir de jQuery 1.4, el evento de cambio ahora burbujea y funciona de manera idéntica a todos los demás navegadores en Internet Explorer". – Ender

5

Además de Ender el código completo podría ser algo como esto.

$('#mySelectBox').change(function() { 
    $('#thingToBlur').blur(); 
}) 

Referencia: http://api.jquery.com/blur/

Cuestiones relacionadas