sirve que pulsado pasar para hacer funciona evento ejemplos detectar como color clic cambiar boton javascript checkbox javascript-events onclick onchange

javascript - que - ¿Existe un estándar para el orden de evento de clic y cambio en una casilla de verificación?



javascript detectar boton pulsado (4)

El documento DOM3 Events tiene una recommendation sobre el orden de los eventos. De acuerdo con ello, en el caso de la casilla de verificación, el orden correcto será hacer click luego change y no al revés, porque el evento de change obviamente es parte de las acciones predeterminadas para la casilla de verificación, vea el Ejemplo 5 y el fiddle , que funciona como se espera en FF pero no en Cromo. Eso es lógico, de todos modos. ¡Pero! Vamos a leer cuidadosamente la sección de acciones por defecto:

Las acciones predeterminadas se deben realizar después de que se haya completado el envío del evento, pero en casos excepcionales también se pueden realizar inmediatamente antes del envío del evento.

¿Viste eso? ¡W3C usa las palabras de RFC DEBE y PUEDE EN UNA ORDEN! Nada que hacer, son chicos cautelosos. OMI, por eso tenemos lo que tenemos :)

He notado que el orden de los eventos de ''clic'' y ''cambio'' son diferentes en Chrome y Firefox.

Vea este JSFiddle por ejemplo: http://jsfiddle.net/5jz2g/3/

JavaScript:

var el = $(''foo''); var fn = function(e) { console.log(e.type); } el.addEvent(''change'', fn); el.addEvent(''click'', fn);

En Chrome esto registra:

change click

Y en Firefox esto se registra:

click change

¿Existe alguna norma para el orden de los eventos? ¿Cuál debe disparar primero? El MDN no parece mencionar esto y no pude encontrar nada sobre esto en los documentos del W3C.


No se pudo encontrar una manera de sincronizar eventos en el navegador ...

lo siguiente funciona en el mismo orden tanto en FF como en Chrome;

Código JavaScript (use mouseup / mousedown para capturar el "clic"):

var el = $(''foo''); var fn = function(e) { console.log(e.type); } el.addEvent(''change'', fn); el.addEvent(''mouseup'', fn);

http://jsfiddle.net/5jz2g/17/


No, pero si desea que sea coherente, puede disparar un evento del otro en lugar de que se disparen por separado ya que para una casilla de verificación y cambiar la cantidad al mismo evento ... o tal vez podría usar un temporizador de intervalos para Retrasar la respuesta en uno de los eventos.


prueba esto

$(function(){ var $select = $(''foo''); var store = function(e) { console.log(e.type); }; $select.addEvent(''change'', store).addEvent(''click'', store); });

http://jsfiddle.net/donddoug/Du7z5/