2011-10-06 21 views
9

Tengo menús desplegables dinámicos de selección. Por ejemplo, si selecciona un mes específico, el segundo elemento de selección se completará con el número de días de ese mes.Cambiar el evento que no se activa en elementos seleccionados con Mobile Safari "asistente de formulario"

Esto funciona según lo previsto, sin embargo, cuando el usuario está en un iPhone y utiliza el botón "Siguiente" integrado en el "asistente de formulario" de Mobile Safari, el evento change (usando jQuery) no parece disparar y el 2º no se actualiza

$('.month').change(function() { 
    // update "days" select element 
}); 

FYI También estoy usando jQuery Mobile

+0

salida en el depurador de iPhone (modo de depuración de Safari)? –

+0

Ninguno. Estoy pensando que esto puede ser solo un error de safari móvil. – wdm

Respuesta

2

La mejor solución que pude encontrar se basó en esta publicación ...

Strange behavior of select/dropdown's onchange() JS event when using 'Next' on Mobile Safari Dropdown list item select box

Usando el plugin (desde el enlace anterior), que tuvieron que forzar el menú de selección para blur tan pronto como opción fue elegido con "asistente forma" de Safari Mobile.

Observé sin embargo cuando la fuerza bruta probar estos menús un evento adicional blur dispararía después de algunas selecciones de ida y vuelta. Un focus extra pareció arreglar eso.

$('select').quickChange(function() { 
    $(this).blur(); 
    $('select').focus(); // somehow prevents an extra blur from firing on focus 
}); 

Con una función separada change Estoy actualizando el segundo menú de selección dinámica.

$("#select-choice-month").change(function() { 
    // update second select dynamically 
}); 

* Solo probado en Mobile Safari/iOS 5.0.1 hasta ahora.

5

También podría obligar a algunos eventos adicionales como blur (no sé si hace falta de definición del fuego en el iPhone, aunque)

$('.month').bind('change blur',function(){ 

}); 

o tienen usted intentó:

$('.month').live('change',function(){ 
}); 
+0

Gracias por la sugerencia. Probé varios eventos diferentes porque pensé que ese podría ser el problema. No fue capaz de disparar a nadie. – wdm

+0

@wdm actualizó mi respuesta – Andy

+0

La selección de mes es estática en el DOM por lo que la función 'live()' no creo que sea necesaria. Le di una oportunidad de todos modos y no tuve suerte. – wdm

Cuestiones relacionadas