2011-04-21 11 views
7

Este es mi primer post aquí - hola a todosgoogle chrome no desencadena desenfoque de evento en los botones de radio?

estoy desarrollando actualmente un formulario HTML con el apoyo de CSS y jQuery. El formulario será utilizado por "usuarios inexpertos" por lo que mi atención se centra en la buena usabilidad. Por lo tanto, estoy proporcionando una pista para cada campo de entrada con más instrucciones. Para mostrar las sugerencias, estoy utilizando el evento onfocus/onblur javascript, por lo que solo se muestra una sugerencia a la vez. Esto funcionó bien cuando solo tenía campos de entrada de type="text", pero con campos de entrada de type="radio" tengo problemas en google chrome.

Hice un ejemplo rápido en jsfiddle.net para que pueda ver lo que quiero decir. El código allí es muy similar al código que uso en mi formulario, así que no me molesté en publicarlo aquí. La alerta aparece en todos los navegadores que probé hasta ahora excepto google chrome. ¿Me pregunto porque? ¿Hay alguna solución conocida o solución alternativa?

+0

La alerta funciona para mí en Chrome 10.0.0.648.205 Win64. Selecciono el botón de radio y luego le quito la pestaña, haciendo que pierda el foco. Además, si cierro la ventana mientras está enfocado, el evento onblur se dispara y veo la alerta. –

+0

Funciona para mí también – Andre

+0

No funciona para mí; Chrome 10.0.648.205 Win7 – dooburt

Respuesta

3

Working sample:

$('input').on({ 
    click: function (e) { 
     this.focus(); 
     $('#' + this.id + 'msg').show(); 
    }, 
    blur: function (e) { 
     $('#' + this.id + 'msg').hide(); 
    } 
}); 
+0

sí, parece que configurar manualmente el foco en el botón de radio (cuando se hace clic) funciona. Mi versión de trabajo: http://jsfiddle.net/54y69/11/ – mwallisch

+0

@canon lo siento, tienes razón. Eliminado mi comentario –

2

blur funcionará en ciertas versiones de Chrome (pero no en la mía 10.0.648.205), pero solo si se aleja de toda la colección de elementos. No estoy seguro si esto es útil, pero esto va a funcionar:

$('input:radio').click(function() { 
    alert('why does this not show up in google chrome?!'); 
}); 

HTH.

+0

Lo sentimos, pero el 'onBlur' es un evento Javascript para los elementos del botón' radio'. Establezca esta página ------- http://www.javascriptkit.com/jsref/radio.shtml –

+2

'onBlur' de qué? Si el botón de opción es parte de una colección, ¿es la colección la que está borrosa o el control mismo? Hay ambigüedad y quizás ¿por qué no funciona en Chrome? 'blur' collection = funciona, el elemento' blur' no. – dooburt

4

De quirksmode:

Safari y Chrome no se activan eventos de enfoque/desenfoque cuando el usuario utiliza el ratón para acceder casillas de verificación, radios o botones. Los campos de texto, textareas y seleccionan los cuadros que funcionan correctamente.

Hay algunas sugerencias para evitar este here.

+0

Como digo en la pregunta a la que hizo referencia: encontré el mismo problema, las entradas de texto y las entradas de radio tenían el evento "enfocado" pero la radio no activó este evento en Webkit, por lo que se pusieron en el evento de "cambio". Ahora tengo dos eventos, "foco" para las entradas de texto y "cambio" para la radio, ambos llaman a la misma devolución de llamada. –

Cuestiones relacionadas