Existe uma maneira de forçar o teclado numérico a aparecer no telefone para uma <input type="text">
? Acabei de perceber que <input type="number">
no HTML5 é para "números de ponto flutuante", então não é adequado para números de cartão de crédito, códigos postais etc.
Quero emular a funcionalidade do teclado numérico de <input type="number">
, para entradas que usam valores numéricos diferentes de números de ponto flutuante. Existe, talvez, outro input
tipo apropriado que faça isso?
Respostas:
Você pode fazer
<input type="text" pattern="\d*">
. Isso fará com que o teclado numérico apareça.Consulte aqui para obter mais detalhes: Guia de programação de texto, Web e edição para iOS
fonte
\d*
não funciona e[0-9]
é necessário. Observe que isso funcionará comtype='numeric'
. Isso é sugerido com base na referência de documentos vinculados para o CEP.Em meados de 2015, acredito que esta é a melhor solução:
Isso fornecerá o teclado numérico no Android e no iOS:
Ele também fornece o comportamento esperado da área de trabalho com os botões de seta para cima / para baixo e o aumento fácil da tecla de seta para cima / para baixo do teclado:
Experimente neste trecho de código:
Através da combinação de ambos
type="number"
epattern="[0-9]*
, obtemos uma solução que funciona em todos os lugares. Além disso, é compatível com o futuroinputmode
atributo proposto do HTML 5.1 .Nota: O uso de um padrão acionará a validação nativa do formulário do navegador. Você pode desativar isso usando o
novalidate
atributo ou pode personalizar a mensagem de erro para uma falha na validação usando otitle
atributoSe você precisar digitar zeros à esquerda, vírgulas ou letras - por exemplo, códigos postais internacionais - verifique esta pequena variante .
Créditos e leituras adicionais:
http://www.smashingmagazine.com/2015/05/form-inputs-browser-support-issue/ http://danielfriesen.name/blog/2013/09/19/input-type-number-and-ios- teclado numérico/
fonte
type="number"
especificação HTML5 diz que Os seguintes atributos de conteúdo não devem ser especificados e não se aplicam ao elemento: ... inputmode<input type="text" inputmode="numeric">
e quer que os navegadores móveis examineminputmode
para determinar se mostra um numpad ou teclado completo. Como nenhum navegador é compatívelinputmode
, não tenho certeza de como será implementado nos navegadores de desktop e móvel. Ex: Os navegadores de desktop permitem digitação de letras<input type="text" inputmode="numeric">
? Se assim for, isso é um problema.<input type="number">
evita isso, apenas permitindo números. Talvez tenhamos que esperar até que os navegadores comecem a implementá-lo e poderemos atualizar esta resposta.type="number"
é decente , mas pode exibir um botão rotativo que não faz muito sentido, por exemplo, para números de cartão de crédito.This attribute applies when the value of the type attribute is text, search, tel, url, email, or password, otherwise it is ignored.
Descobri que, pelo menos para campos do tipo "código de acesso", fazer algo como
<input type="tel" />
acaba produzindo o campo orientado a números mais autêntico e também tem o benefício de não ser auto-formatado . Por exemplo, em um aplicativo móvel que desenvolvi para a Hilton recentemente, acabei concordando com isso:... e meu cliente ficou muito impressionado.
fonte
number
força regras estritas para o número em muitos navegadores. Se o usuário adicionar espaço (ou vírgula) para separar milhares, você não receberá QUALQUER valor da entrada. Sim, mesmo em JavaScriptinput.value
estará vazio. A entrada do tipotel
não é restrita a um formato específico, portanto o usuário ainda pode inserir qualquer coisa e a validação é um processo separado (para o desenvolvedor manipular).Usar o botão
type="email"
outype="url"
fornecerá um teclado em alguns telefones, pelo menos, como o iPhone. Para números de telefone, você pode usartype="tel"
.fonte
Existe o perigo de usar o
<input type="text" pattern="\d*">
para abrir o teclado numérico. No firefox e chrome, a expressão regular contida no padrão faz com que o navegador valide a entrada para essa expressão. ocorrerão erros se não corresponder ao padrão ou for deixado em branco. Esteja ciente de ações não intencionais em outros navegadores.fonte
novalidate
atributo à contençãoform element
deve lidar com os problemas de validação automática. Certifique-se de fazer alguma validação por conta própria.Com o Inputmode, você pode dar uma dica para o navegador.
fonte
Eu acho que
type="number"
é o melhor para a página da web semântica. Se você quiser apenas mudar o teclado, pode usartype="number"
outype="tel"
. Nos dois casos, o iPhone não restringe a entrada do usuário. O usuário ainda pode digitar (ou colar) qualquer caractere que desejar. A única alteração é o teclado mostrado ao usuário. Se você quiser alguma restrição além disso, precisará usar JavaScript.fonte
type="number"
é para flutuar.type="text"
é para string. O que você realmente quer é inteiro. Acho float é mais próximo do número inteiro do que string. O que você acha?01920
a1920
.Para mim, a melhor solução foi:
Para números inteiros, que exibe o teclado 0-9 no android e iphone
Você também pode fazer isso para ocultar os giradores no firefox / chrome / safari, a maioria dos clientes acha feio
E adicione novalidate = 'novalidate' ao seu elemento de formulário, se você estiver fazendo uma validação personalizada
Ps, no caso de você realmente querer números de ponto flutuante, o passo para qualquer precisão que você desejar adicionará '.' para android
fonte
Em 2018:
está funcionando para Android e iOS.
Eu testei no Android (^ 4.2) e iOS (11.3)
fonte
Você pode tentar assim:
Mas tenha cuidado: se sua entrada contiver algo diferente de um número, ela não será transmitida ao servidor.
fonte
Não consegui encontrar um tipo que funcionasse melhor para mim em todas as situações: eu precisava usar como padrão a entrada numérica (entrada de "7.5", por exemplo), mas também em alguns momentos permitir o texto ("passar", por exemplo). Os usuários queriam um teclado numérico (entrada de 7,5, por exemplo), mas era necessária entrada ocasional de texto ("aprovação", por exemplo).
Em vez disso, o que fiz foi adicionar uma caixa de seleção ao formulário e permitir que o usuário alternasse minha entrada (id = "inputSresult") entre type = "number" e type = "text".
Em seguida, liguei um manipulador de cliques na caixa de seleção que alterna o tipo entre texto e número, com base no fato de a caixa de seleção acima estar marcada:
Isso funcionou bem para nós.
fonte
ele fornecerá a entrada de texto usando o teclado numérico
fonte
tente isto:
consulte: https://answers.laserfiche.com/questions/88002/Use-number-field-input-type-with-Field-Mask
fonte