Tenho um site para celular e contém alguns input
elementos HTML , como este:
<input type="text" name="txtAccessoryCost" size="6" />
Eu embuti o site em um WebView
para possível consumo do Android 2.1, de modo que também será um aplicativo Android.
É possível obter o teclado com números em vez do padrão com letras quando este input
elemento HTML está focado?
Ou é possível configurá-lo para todo o aplicativo (talvez algo no arquivo Manifest ), se não for viável para um elemento HTML?
inputmode="number"
atributo parece ser a resposta correta no final de 2019: developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/… . A resposta mais votada no momento deste comentário sugeretype="number"
, o que vem com algumas de suas próprias armadilhas;inputmode
parece impactar apenas a tela do teclado virtual, ao invés do comportamento / restrições da própria entrada.Respostas:
Ambos apresentam o teclado numérico quando a entrada ganha o foco.
<input type="search" />
mostra um teclado normal com um botão de pesquisa extraTodo o resto parece trazer à tona o teclado padrão.
fonte
input
type
s da especificação HTML , incluindonumber
etel
.type="tel"
é pior para digitar números do que o teclado paratype="number"
.<input type="text" pattern="\d*" />
também traz o teclado numérico, mas apenas no iOS, não no Android .NOTA IMPORTANTE
Estou postando isso como uma resposta, não como um comentário, pois é uma informação bastante importante e vai atrair mais atenção neste formato.
Como outros colegas apontaram, você pode forçar um dispositivo a mostrar um teclado numérico com
type="number"
/type="tel"
, mas devo enfatizar que você deve ser extremamente cauteloso com isso.Se alguém espera um número que começa com zeros, como
000222
, provavelmente terá problemas, pois alguns navegadores (desktop Chrome, por exemplo) enviarão para o servidor222
, o que não é o que ela deseja.Sobre
type="tel"
Não posso dizer nada parecido, mas pessoalmente não uso, pois seu comportamento em telefones diferentes pode variar. Limitei-me ao simplespattern="[0-9]*"
que não funciona no Androidfonte
type="tel"
. As notas de especificação quetel
não impõem nenhuma sintaxe particular, ao contrário denumber
, que requer que seu valor seja um número de ponto flutuante válido .Isso deve funcionar. Mas tenho os mesmos problemas em um telefone Android.
Eu descobri que se eu não incluísse o framework jquerymobile, o teclado era mostrado corretamente nos dois tipos de campos.
Mas eu não encontrei uma solução para resolver esse problema, se você realmente precisa usar o jquerymobile.ATUALIZAÇÃO: descobri que se a tag do formulário for armazenada fora do
O teclado numérico não é mostrado. Deve ser um bug ...
fonte
inputmode
de acordo com a especificação WHATWG é o método padrão.Para dispositivos iOS, adicionar
pattern
também pode ajudar.Para compatibilidade com versões anteriores, use
type
também, uma vez que o Chrome os usa a partir da versão 66.fonte
decimal
e encontrei aqui developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/…Alguns navegadores ignoram o envio de zero à esquerda para o servidor quando o tipo de entrada é "número". Então, eu uso uma mistura de jquery e html para carregar um teclado numérico e também me certifico de que o valor seja enviado como um texto, não como um número:
fonte
type="digits"
opção para não precisarmos desses hacks. Quero dizer, não é como se um número zero à esquerda fosse tão raro (os códigos postais nos EUA são um exemplo óbvio).input type = number
Quando quiser fornecer uma entrada numérica, você pode usar o valor de atributo HTML5 input type = "number".
Aqui está o teclado que vem no iPhone 4:
Captura de tela do iPhone do número do tipo de entrada HTML5 Android 2.2 usa este teclado para type = number:
Captura de tela do Android do número do tipo de entrada HTML5
fonte
Adicione um atributo de etapa à entrada de número
Fonte: http://blog.pamelafox.org/2012/05/triggering-numeric-keyboards-with-html5.html
fonte