2009-04-24 14 views

Respuesta

137

El evento onBlur se dispara cuando se ha mudado lejos de un objeto sin que necesariamente se haya cambiado su valor.

El evento onChange sólo se invoca cuando se ha cambiado el valor del campo y se pierde el foco.

Es posible que desee echar un vistazo a quirksmode's intro to events. Este es un excelente lugar para obtener información sobre lo que sucede en su navegador cuando interactúa con él. Su libro también es bueno.

+1

su enlace sobre quirksmode no habla de desenfoque, solo eventos básicos – stackdave

3

onChange es cuando algo dentro de un campo cambia, por ejemplo, se escribe algo en una entrada de texto.

onBlur es cuando se toma el foco lejos de un campo, por ejemplo, estuviera escribiendo en una entrada de texto y de haber hecho clic fuera de él.

Así que en realidad son casi lo mismo, pero para onChange se comporte de la manera onBlur hace algo en el que la entrada tiene que cambiar.

4

onBlur es cuando su enfoque ya no está en el campo en cuestión.

La propiedad onblur devuelve el código del controlador de eventos onBlur, si existe, que existe en el elemento actual.

onChange es cuando cambia el valor del campo.

9

Un ejemplo para hacer cosas concretas. Si usted tiene una selección de este modo:

<select onchange="" onblur=""> 
    <option>.... 
</select> 

la onblur() se llama cuando se desplaza fuera. Se llama al onchange() cuando selecciona una opción diferente de la selección, es decir, cambia lo que está seleccionado actualmente.

+1

Otro ejemplo: en las entradas de tipo 'número', al hacer clic en las flechas hacia arriba/abajo se activará un evento de cambio (pero no un evento de desenfoque), mientras se escribe solo causa un evento de cambio cuando el campo pierde el foco. –

17

onblur se dispara cuando un campo pierde el foco, mientras que el cambio se dispara cuando cambia el valor de ese campo. Sin embargo, estos eventos no siempre ocurrirán en el mismo orden.

En Firefox, la tabulación de un campo modificado se disparará onchange continuación onBlur, y normalmente se hará lo mismo en el IE. Sin embargo, si presiona la tecla Intro en lugar de la pestaña, en Firefox se activará y luego se cambiará, mientras que IE generalmente se activará en el orden original. Sin embargo, he visto casos en los que IE también disparará borrosos primero, así que ten cuidado. No puede suponer que el onblur o el cambio ocurrirá antes que el otro.

7

En Firefox, el cambio solo se activa al tabular o al hacer clic fuera del campo de entrada. Lo mismo es cierto de Onblur. La diferencia es que Onblur activará si cambiaste algo en el campo o no. Es posible que ENTER active uno o ambos, pero no lo sabría si desactiva el ENTRAR en sus formularios para evitar envíos inesperados.

3

Creo que es importante tener en cuenta que onBlur() se dispara independientemente.

Esto es un hilo útil pero lo único que no aclara es que onBlur() se disparará cada vez.

onChange() solo se activará cuando se cambie el valor.

Cuestiones relacionadas