2010-07-30 13 views
66

tengo un sitio web para móviles y tiene algo de HTML input elementos que lo integran, así:Cómo forzar teclado con números de sitio web para móviles en Android

<input type="text" name="txtAccessoryCost" size="6" /> 

que han incorporado el sitio en un WebView para su posible Android 2.1 consumo, por lo que también será una aplicación de Android.

¿Es posible obtener el teclado con números en lugar del predeterminado con letras cuando este elemento HTML input está enfocado?

O, ¿es posible configurarlo para toda la aplicación (tal vez algo en the Manifest file), si no es factible para un elemento HTML?

+0

Si quieren un teclado numérico en iOS además de Android, debes hacer esto: http://stackoverflow.com/a/31619311/806956 –

Respuesta

82
<input type="number" /> 
<input type="tel" /> 

Ambos presentan el teclado numérico cuando la entrada gana enfoque.

<input type="search" /> muestra un teclado normal con un botón de búsqueda adicional

Todo lo demás parece que aparezca el teclado estándar.

+0

Lo echaré un vistazo hoy, y luego te avisaré si eso funcionaría. Gracias, Richard! – ncakmak

+1

Hola Richard. Ninguno funcionó, el campo de entrada sigue abriendo el teclado estándar. – ncakmak

+0

[La lista de la especificación HTML de 'input'' type's] (http://www.whatwg.org/specs/web-apps/current-work/multipage/states-of-the-type-attribute.html) , incluido ['number'] (http://www.whatwg.org/specs/web-apps/current-work/multipage/states-of-the-type-attribute.html#number-state-%28type=number % 29) y ['tel'] (http://www.whatwg.org/specs/web-apps/current-work/multipage/states-of-the-type-attribute.html#telephone-state-%28type = tel% 29). –

6

Esto debería funcionar. Pero tengo los mismos problemas en un teléfono Android.

<input type="number" /> <input type="tel" /> 

descubrí, que si no he incluido el jquery mobile-marco, el teclado mostró correctamente en los dos tipos de campos.

Pero no he encontrado una solución para resolver ese problema, si realmente necesita usar jquerymobile.

UPDATE: descubrí, que si la etiqueta de formulario se almacena fuera de la

<div data-role="page"> 

el número del teclado no se muestra. Esto debe ser un error ...

+0

Gracias por investigar esto. Sin embargo, no estoy seguro de entender: "si el form-tag está almacenado fuera del div [data-role = page]". En mi caso, el problema ocurre con formularios que están anidados muy bien dentro de un div [data-role = page]. Quizás el problema es que estas páginas se muestran, en mi caso, como diálogos? – Wytze

37

NOTA IMPORTANTE

Estoy publicar esto como una respuesta, no un comentario, ya que es bastante importante información y atraerá más atención en este formato.

Como otros compañeros señalaron, se puede forzar un dispositivo para mostrar un teclado numérico con type="number"/type="tel", pero hay que destacar que hay que ser extremadamente cuidadoso con esto.

Si alguien espera un número que empieza con ceros, como 000222, entonces es probable que tenga problemas, ya que algunos navegadores (Chrome de escritorio, por ejemplo) enviará al servidor 222, que no es lo que quiere.

Acerca de type="tel" No puedo decir nada similar, pero personalmente no lo uso, ya que su comportamiento en diferentes teléfonos puede variar.Me he limitado a la simple pattern="[0-9]*" que no funcionan en Android

+4

El reformateo automático probablemente no ocurra con 'type =" tel "'. [La especificación] (http://www.whatwg.org/specs/web-apps/current-work/multipage/states-of-the-type-attribute.html#telephone-state-%28type=tel%29) señala que 'tel' no impone ninguna sintaxis particular, a diferencia de [' number'] (http://www.whatwg.org/specs/web-apps/current-work/multipage/states-of-the-type- attribute.html # number-state-% 28type = number% 29), que requiere que su valor sea un [número válido de coma flotante] (http://www.whatwg.org/specs/web-apps/current-work /multipage/common-microsyntaxes.html#valid-floating-point-number). –

+0

¿Qué tan malo es? Estamos tratando de acelerar el proceso de formularios para nuestros clientes de telefonía móvil y esta parece ser una solución obvia, pero también queremos algo confiable. Usted publicó una fuerte advertencia contra el uso de este método. Me pregunto si podrías elaborar un poco más sobre eso. –

+0

@Philll_t, un usuario necesita enviar datos de '000222', pero en el servidor obtiene '222'.¿No ves que la funcionalidad está completamente rota? El servidor obtiene datos incorrectos. – user907860

-1

input type = number

Cuando se desea proporcionar un ingreso de números, se puede utilizar el tipo de entrada HTML5 = "número" valor del atributo.

<input type="number" name="n" /> 

Aquí es el teclado que aparece en el iPhone 4:

iPhone Imagen de HTML5 tipo de entrada número Android 2.2 utiliza este teclado para el tipo = número:

Android Captura de pantalla de HTML5 tipo de entrada número

1

Algunos navegadores igoners que envían cero inicial al servidor cuando el tipo de entrada es "número". Así que yo uso una mezcla de jQuery y HTML para cargar un teclado numérico y también asegurarse de que el valor se envía como texto no como un número:

$(document).ready(function(){ 
 
$(".numberonly").focus(function(){$(this).attr("type","number")}); 
 
$(".numberonly").blur(function(){$(this).attr("type","text")}); 
 
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="text" class="numberonly">

+2

Esto causa un problema molesto en Chrome para Android. Cuando toca la entrada, el teclado ** no ** aparece. Luego debe tocar el cuadro de texto por segunda vez y luego el teclado aparecerá con el teclado numérico. Realmente me gustaría tener una opción 'type =" digits "' para no tener que tener estos hacks. Quiero decir, no es que un número que lidere cero sea tan raro (los códigos postales en EE. UU. Son un ejemplo obvio). – Jaxidian

+0

¡Me enfrento al mismo problema! el campo de configuración para "type = tel" es la mejor solución hasta el momento. –

Cuestiones relacionadas