Tengo un formulario de entrada de número de tarjeta de crédito que utilizarán los navegadores móviles y no móviles.Entrada para dispositivos móviles de una cadena de dígitos + espacios (número de tarjeta de crédito)
Quiero indicar que debe aparecer un teclado en el móvil, y para permitir espacios (opcionales), por lo que "4111 1234 1234 1234" o "4111123412341234" deben aceptarse.
De lo que he encontrado, las opciones son:
a) <input type="tel"/>
- esto parece comportarse como quiero (con navegadores móviles actuales, al menos), pero es semánticamente mal.
b) <input type="text" pattern="[\d ]*"/>
o similar - el iPhone recognises some patterns ([0-9]*
, \d*
) como el trabajo con el teclado, pero esto no funciona así en Android. Además, no estoy seguro de que existan patrones que el iPhone otorgue un teclado numérico que permita espacios, aunque no tengo un iPhone a mano para verificar en este momento.
c) Intente detectar el navegador con Javascript y use (a) para dispositivos móviles y (b) para dispositivos no móviles. Cludgy, y ningún beneficio real sobre (a).
<input type="number"/>
parece no ser un iniciador desde Chrome at least will force such input to a number, por lo tanto, interrumpir la entrada con espacios.
¿Hay una mejor manera de insinuar a los navegadores móviles que deberían ofrecer un teclado numérico que usando type="tel"
?
Editar:
Tal vez una propiedad -webkit-*
que podría ser aplicado a un campo de entrada de texto normal a insinuar que un teclado numérico se debe mostrar?
Bah, acabo de encontrar un duplicado: [Número de tipo de entrada HTML5 frente a tel] (http://stackoverflow.com/questions/8216278/html5-input-type-number-vs-tel) –