2011-11-04 19 views
15

¿Alguien sabe alguna solución para esto? Estoy tratando de usar un elemento de selección para la navegación. Se ve algo como esto;iOS seleccione onchange no dispara

<select onchange="window.location=(this.options[this.selectedIndex].value)"> 

Funciona en todos los navegadores de escritorio y también funciona en mi teléfono WP7. No funciona en mi iPhone (iOS 5.0).

Respuesta

24

iOS tiende a no disparar los eventos change cuando cambia el valor de sus entradas. Tengo documented this in more depth at the Device-Bugs tracker.

La solución alternativa es vincular el evento blur en su lugar. En el ejemplo anterior, use onblur y estará todo listo.

<select onblur="window.location=(this.options[this.selectedIndex].value)"> 
+0

Funciona perfectamente. Gracias –

+0

Disparan el evento justo después de que el usuario "hace clic" en la opción que es la cosa ... Así que no son los eventos "hechos" los que dispararán el cambio. Entonces sí, el desenfoque es preferido en este caso. Es una mierda esta fragmentación ... – Miguel

0

Acabo de configurar la acción del formulario en una página php que redirige la página. Ni siquiera necesita un botón de envío (aunque también puede agregar uno para la degradación elegante y luego ocultarlo con js), el widget del selector de listas de iOS activa automáticamente la acción del formulario cuando se presiona el botón 'Listo'.

Originalmente quería evitar acciones de formulario y enviar botones porque sentía que el enfoque js onChange era más limpio, pero estoy de acuerdo con el uso de php en iOS, ya que no requiere el botón de enviar.

Cuestiones relacionadas