Eu preciso ter certeza de que um determinado <input>
campo tenha apenas números como valor. A entrada não faz parte de um formulário. Portanto, ele não é enviado, portanto, validar durante o envio não é uma opção. Desejo que o usuário não consiga digitar caracteres que não sejam números.
Existe uma maneira legal de conseguir isso?
html
input
numbers
validating
Chiel ten Brinke
fonte
fonte
Respostas:
HTML 5
Você pode usar o número do tipo de entrada HTML5 para restringir apenas as entradas numéricas:
Isso funcionará apenas no navegador de reclamações HTML5. Verifique se o doctype do seu documento html é:
<!DOCTYPE html>
Consulte também https://github.com/jonstipe/number-polyfill para obter suporte transparente em navegadores mais antigos.
Javascript
Atualização: Existe uma solução nova e muito simples para isso:
Veja esta resposta ou tente você mesmo no JSFiddle .
Para fins gerais, você pode ter a validação JS como abaixo:
Se você deseja permitir decimais, substitua a "condição se" por esta:
Fonte: a entrada de texto HTML permite apenas entrada numérica
Demonstração do JSFiddle: http://jsfiddle.net/viralpatel/nSjy7/
fonte
var charCode = (evt.which) ? evt.which : evt.keyCode;
Você também pode usar o atributo padrão em html5:
Tutorial de validação de entrada
Embora seu doctype não seja
html
, acho que você precisará usar javascript / jquery.fonte
Código Rápido e Fácil
Isso permitirá o uso de números e backspace apenas.
Se você também precisar de parte decimal, use este fragmento de código
fonte
Por favor, tente este código junto com o próprio campo de entrada
funcionará bem.
fonte
Você pode usar um
<input type="number" />
. Isso permitirá que apenas números sejam inseridos na caixa de entrada.Exemplo: http://jsfiddle.net/SPqY3/
Observe que a
type="number"
tag de entrada é suportada apenas em navegadores mais recentes.Para o firefox, você pode validar a entrada usando javascript:
http://jsfiddle.net/VmtF5/
Atualização 2018-03-12: O suporte ao navegador é muito melhor agora, com o seguinte suporte:
fonte
e nos js:
ou você pode escrevê-lo de uma maneira complicada, mas útil:
Nota : entre navegadores e regex em literal.
fonte
0.43
ou.43
) que podem ser feitos com a verificação do valor da entrada atual mais a tecla pressionada. Isso seria feio no código de uma linha, eu recomendo usar uma função para isso. Para testar um número inteiro ou flutuar, verifique aqui .Eu usei expressão regular para substituir o valor de entrada pelo padrão necessário.
fonte
onkeyup
dispara quando a chave é liberada.isNaN(parseFloat(value))?
verifica se o valor de entrada não é um número.Se não for um número, o valor será definido como 1000
:
Se for um número, o valor será definido como o valor.Nota: Por alguma razão, ele funciona apenas com
type="number"
Para torná-lo ainda mais emocionante, você também pode ter um limite:
Aproveitar!
fonte
Eu briguei com este por um tempo. Muitas soluções aqui e em outros lugares pareciam complicadas. Esta solução usa jQuery / javascript ao lado de HTML.
No meu caso, eu estava rastreando pequenas quantidades com um valor mínimo de 1, portanto, o min = "1" na tag de entrada e abc = 1 na verificação isNaN (). Para números apenas positivos, você pode alterar esses valores para 0 e até mesmo remover o valor mínimo = "1" da tag de entrada para permitir números negativos.
Além disso, isso funciona para várias caixas (e pode poupar algum tempo de carregamento ao fazê-las individualmente por ID); basta adicionar a classe "validateNumber", quando necessário.
Explicação
parseInt () basicamente faz o que você precisa, exceto pelo fato de retornar NaN em vez de algum valor inteiro. Com um simples if (), você pode definir o valor "fallback" preferido em todos os casos em que o NaN é retornado :-). O W3 também declara aqui que a versão global do NaN digitará conversão antes da verificação, o que fornece algumas provas extras (Number.isNaN () não faz isso). Quaisquer valores enviados para um servidor / back-end ainda devem ser validados lá!
fonte
JSFiddle: https://jsfiddle.net/ug8pvysc/
fonte
se você pode usar HTML5, você pode fazê-lo.
<input type="number" />
Caso contrário, será necessário fazê-lo através de javascript, pois você disse que não é enviado para fazê-lo a partir do código de trás.O PS não testou o código, mas deve estar mais ou menos correto, se não verificar erros de digitação: D Você pode adicionar mais algumas coisas, como o que fazer se a string for nula ou vazia, etc. Além disso, você pode tornar isso mais rápido: D
fonte
Que tal usar
<input type="number"...>
?http://www.w3schools.com/tags/tag_input.asp
Além disso, aqui está uma pergunta que tem alguns exemplos de uso de Javascript para validação .
Atualização: vinculada a uma pergunta melhor (obrigado alexblum).
fonte
se não for um conjunto inteiro 0
fonte
A resposta aceita:
É bom, mas não perfeito. Funciona para mim, mas recebo um aviso de que a instrução if pode ser simplificada.
Então fica assim, que é bem mais bonito:
Comentaria a postagem original, mas minha reputação é muito baixa para fazer isso (criei esta conta).
fonte
Você pode usar a
<input>
tag com o atributo type = 'number'.Por exemplo, você pode usar
<input type='number' />
Este campo de entrada permite apenas valores numéricos. Você também pode especificar o valor mínimo e o valor máximo que devem ser aceitos por esse campo.
fonte
Por favor, veja meu projeto do filtro de navegador do valor do elemento de entrada de texto em sua página da Web usando a linguagem JavaScript: Filtro de Chave de Entrada . Você pode filtrar o valor como um número inteiro, um número flutuante ou escrever um filtro personalizado, como um filtro de número de telefone. Veja um exemplo de código de entrada com um número inteiro:
Veja também minha página "Campo inteiro:" do exemplo do filtro de chave de entrada
fonte
Para fins gerais, você pode ter a validação JS como abaixo:
Funcionará no teclado numérico e nas teclas numéricas normais
fonte
Adicione dentro da sua tag de entrada: onkeyup = "value = value.replace (/ [^ \ d] / g, '')"
fonte
Atualizei algumas respostas postadas para adicionar o seguinte:
Especifique quantos números após o ponto decimal é permitido.
fonte
Eu uso isso para códigos postais, rápido e fácil.
fonte
Ao usar esse código, você não pode usar o "Botão BackSpace" no Mozilla Firefox, você só pode usar o backspace no Chrome 47 && event.charCode <58; "pattern =" [0-9] {5} "obrigatório>
fonte
http://www.texotela.co.uk/code/jquery/numeric/ créditos de entrada numéricos para Leo Vũ por mencionar isso e, é claro, o TexoTela. com uma página de teste.
fonte
É melhor adicionar "+" à condição REGEX para aceitar vários dígitos (não apenas um dígito):
<input type="text" name="your_field" pattern="[0-9]+">
fonte
Uma maneira poderia ser ter uma matriz de códigos de caracteres permitidos e, em seguida, usar a
Array.includes
função para verificar se o caractere digitado é permitido.Exemplo:
fonte
Simples o suficiente?
fonte