Entrada compatível com dispositivos móveis de uma cadeia de dígitos + espaços (um número de cartão de crédito)

Eu tenho um formulário de entrada de número de cartão de crédito que será usado por navegadores móveis e não móveis.

Quero sugerir que um teclado deve aparecer no celular e permitir espaços (opcionais), portanto, "4111 1234 1234 1234" ou "4111123412341234" devem ser aceitos.

Pelo que descobri, as opções são:

a)<input type="tel"/> - isso parece se comportar como eu quero (com os navegadores móveis atuais, pelo menos), mas está semanticamente errado.

b)<input type="text" pattern="[\d ]*"/> ou similar - oiPhone reconhece alguns padrões ([0-9]*, \d*) como trabalhar com o teclado, mas isso não funciona tão bem no Android. Também não tenho certeza se existem padrões que o iPhone vai dar um numpad para isso permitir espaços, embora eu não tenha um iPhone na mão para verificar agora.

c) Tente a detecção do navegador com Javascript e use (a) para celular e (b) para não-móvel. Cludgy, e nenhum benefício real sobre (a).

<input type="number"/> parece ser um não-iniciante desdeO Chrome, pelo menos, forçará essa entrada para um número, portanto, quebrando a entrada com espaços.

Existe uma maneira melhor de sugerir aos navegadores móveis que eles devem oferecer um numpad do que usartype="tel"?

Editar:

Talvez um-webkit-* propriedade que poderia ser aplicada a um campo de entrada de texto normal para sugerir que um numpad deve ser mostrado?

questionAnswers(2)

yourAnswerToTheQuestion