atualmente eu tenho o seguinte código
<input type="number" />
sai para algo assim
As pequenas coisas do seletor à direita permitem que o número fique negativo. Como evito isso?
Estou com dúvidas sobre o uso type="number"
, está causando mais problemas do que está resolvendo, vou verificar a sanidade de qualquer maneira, então devo voltar a usar type="text"
?
Respostas:
Adicionar um
min
atributofonte
min="0.000001"
ajudará na maioria dos casos. Mais de 6 casas decimais, o JavaScript o converterá no formato de expoente.Eu encontrei outra solução para evitar número negativo.
fonte
oninput="validity.valid||(value='');"
pára um dos números de digitação-veDepende da precisão que você deseja ser. Você deseja aceitar apenas números inteiros que:
Se você deseja carros alegóricos com, por exemplo, dois dígitos após o ponto decimal:
fonte
max
valor.Você pode forçar a entrada a conter apenas um número inteiro positivo adicionando
onkeypress
nainput
tag.Aqui,
event.charCode >= 48
garante que apenas números maiores ou iguais a 0 sejam retornados, enquanto amin
tag garante que você possa chegar a um mínimo de 1 rolando na barra de entrada.fonte
Você pode usar o seguinte para
type="number"
aceitar somente números positivos:fonte
Você pode impedir a entrada negativa em um formulário de entrada de número da seguinte forma:
fonte
Experimentar
<input type="number" pattern="^[0-9]" title='Only Number' min="1" step="1">
fonte
Se precisar de entrada de texto , o padrão também funciona
fonte
Não consigo encontrar a solução perfeita, pois alguns funcionam para inserir, mas não para copiar e colar, alguns são o contrário. Esta solução funciona para mim. Evita que o número negativo seja digitado "e", copie e cole o texto "e".
crie uma função.
adicione essas propriedades à entrada. esses dois impedem de copiar e colar texto não numérico, incluindo "e". você precisa ter os dois juntos para entrar em vigor.
Se você estiver usando o Vue, pode consultar esta resposta aqui . Eu o extraí para um mixin que pode ser reutilizado.
fonte
adicione este código no seu tipo de entrada;
por exemplo:
fonte
Outra solução é usar Js para torná-lo positivo (a opção min pode ser desativada e não é válida quando o usuário digita smth) O evento negativo se não for necessário e ativado ('keydown') também pode ser usado!
fonte
Depende se você deseja um campo int ou float. Aqui está a aparência dos dois:
O campo int possui a validação correta anexada, pois seu mínimo é 1. O campo flutuante aceita 0, no entanto; Para lidar com isso, você pode adicionar mais um validador de restrição :
JSFiddle aqui.
Observe que nenhuma dessas soluções impede completamente o usuário de digitar uma entrada inválida, mas você pode ligar
checkValidity
oureportValidity
descobrir se o usuário digitou uma entrada válida.Obviamente, você ainda deve ter a validação do lado do servidor porque o usuário sempre pode ignorar a validação do lado do cliente.
fonte
Tente o seguinte:
null
enegitive
valores.fonte
Se você tentar inserir um número negativo, o evento onkeyup bloqueará isso e, se você usar a seta no número de entrada, o evento onblur resolverá essa parte.
fonte
fonte
Com o tipo de texto de entrada, você pode usá-lo para uma melhor validação,
fonte
Tente o seguinte:
fonte