2012-02-10 14 views
12

Esto me está volviendo loco y no puedo encontrar la respuesta en ningún lado.html phonegap android: el teclado numérico tiene el siguiente botón en lugar de go

Tengo formularios en la aplicación de mi teléfono. Si el tipo de entrada = "texto", el teclado de texto emerge y aparece "ir" en la esquina. Cuando haces clic en ir, envía el formulario. Eso funciona todo como yo esperaba. Pero si uso input type = "number", aparece el teclado numérico y aparece "next" en la esquina. Cuando hace clic en siguiente, si hay otro cuadro de entrada antes de la etiqueta de botón, va a esa entrada. Esta bien. . . no es ideal, pero tiene sentido. Pero si es el último campo de entrada en la página, haga clic en "Siguiente" no hace nada. No pone el foco en el botón (incluso con tabindex) y no envía el formulario (ideal).

Estoy usando phonegap 1.3.0 y jquery 1.7 si algo de eso ayuda.

+0

+1 en esto, estoy intentando todo. Mientras tanto, PhoneGap tiene la versión 1.5.0 y uso jQueryMobile 1.0.1. Sin progreso. Lo he intentado si es una consecuencia de cualquiera de los atributos de campo, pero fue en vano. – Wytze

+0

Parece que esto no es un problema de PhoneGap, también ocurre en el navegador normal de Android. –

+0

Es cierto que esto no tiene nada que ver con el teléfono. Aunque creo que hay un método basado en Java para solucionarlo porque mi aplicación es phonegap. La única solución que he encontrado hasta ahora es el campo oculto de Wytze que envía automáticamente el formulario. Es un hack terrible, y mientras tanto estamos listos para phonegap 2.0. Todavía me parece una decisión muy desagradable por parte de los desarrolladores de Android. – grail143

Respuesta

5

Bien, ahora tengo algo que parece una respuesta y grazna como una respuesta.

Es un truco horrible, y estoy experimentando algunos efectos secundarios en este momento, pero de todos modos es un pequeño salto para la humanidad.

Agregue una entrada de texto invisible a su formulario, que automáticamente envía el formulario tan pronto como recibe el foco. Como solo puede recibir el foco del usuario presionando 'Siguiente' o tabulando desde el último campo numérico, debe haber una lógica bastante sólida en la secuencia del usuario.

<input type='text' style="opacity:0;" onfocus="javascript:$('#thisForm').submit();"> 

Los efectos secundarios son:

  • el campo de formulario oculto será visible brevemente. Puede evitar esto al usando el controlador onfocus para volver a centrarse en el campo numérico que acaba de ser . O puede establecer el ancho de la entrada en 0. Este último funciona mejor para mí.
  • si está utilizando jQueryMobile como yo, está invitando a la fealdad de transición de página horrible en sí mismo, por lo que si su formulario está en un diálogo y enviar el formulario cierra el diálogo, asegúrese de establecer la transición de diálogo (cuando es ser abierto desde una pantalla previa) a 'ninguno'.
+0

¡Eso fue muy útil! ¡Gracias! – grail143

+0

No pude ocultar la entrada teniendo ancho: 0 en una versión 2.3.4 de HTC G2 Android.Sin embargo, pude ocultarlo usando color de fondo: transparente; y ocultar el molesto borde de enfoque de android naranja con -webkit-tap-highlight-color: rgba (255,255,255,0); http://stackoverflow.com/questions/5210481/disable-android-orange-outline-higlight-on-focus. – Bobby

+0

¡Hacky pero útil! Oculte la entrada estableciendo 'position: absolute' – maGo

9

Puede detectar la siguiente pulsación de teclado utilizando la siguiente unen en jQuery:

$('input').on('keydown', function(e){ 
    if(e.which === 9) { 
     //your code here 
    } 
}); 

El botón 'siguiente' emula el evento pestaña pulsación de tecla en un teclado, que es el código clave 9. Por desgracia, los eventos de pulsación de tecla y tecla no detectan el siguiente evento de tecla, por lo que debe vincularlo en la operación de teclado.

Espero que ayude!

Cuestiones relacionadas