Existe alguma maneira de formatar um input[type='number']
valor para mostrar sempre 2 casas decimais?
Exemplo: quero ver em 0.00
vez de 0
.
Resolvido seguindo as sugestões e adicionando um pedaço de jQuery para forçar o formato em inteiros:
parseFloat($(this).val()).toFixed(2)
robot_speed = parseFloat(robot_speed).toFixed(2)
change
método para acioná-lo sempre que o campo mudar: stackoverflow.com/a/58502237/2056125Você não pode realmente, mas você está no meio do caminho:
fonte
Usar o
step
atributo irá ativá-lo . Ele não apenas determina quanto deve circular, mas também os números permitidos. Usarstep="0.01"
deve resolver, mas isso pode depender de como o navegador adere ao padrão.fonte
input[type="text"]
com todos os sinos e assobios nativos que vêminput[type="number"]
totalmente reimplementados para ele, ou trocando este campo por outro para exibir o valor dependendo do estado do elemento.As soluções que usam
input="number"
step="0.01"
funcionam muito bem para mim no Chrome, porém não funcionam em alguns navegadores, especificamente o Frontmotion Firefox 35 no meu caso .. que devo apoiar.Minha solução foi jQuery com o plugin jQuery Mask de Igor Escobar, da seguinte maneira:
Isso funciona bem, é claro que deve-se verificar o valor enviado posteriormente :) NOTA, se eu não tivesse que fazer isso para compatibilidade do navegador, eu usaria a resposta acima de @Rich Bradshaw.
fonte
type
atributo da entrada énumber
outext
. Se ele retornartext
mesmo que o HTML esteja escrito como,number
então o navegador não oferece suporte a esse tipo, e conectar esse comportamento a ele é uma ação apropriada.Com base nessa resposta de @Guilherme Ferreira você pode acionar o
parseFloat
método toda vez que o campo mudar. Portanto, o valor sempre mostra duas casas decimais, mesmo se um usuário alterar o valor digitando manualmente um número.fonte
change()
função será acionada no curto espaço de tempo entre a entrada do usuário e o clique no botão enviar. Portanto, isso não deve ser um problema.Isso funciona para forçar um máximo de 2 casas decimais sem arredondar automaticamente para 2 casas se o usuário não terminar de digitar.
fonte
Se você parou aqui apenas se perguntando como limitar a 2 casas decimais , tenho uma solução de javascript nativo:
Javascript:
HTML:
Observe que isso não pode AFAIK, defender contra esse bug do cromo com a entrada de número.
fonte
Eu sei que esta é uma pergunta antiga, mas me parece que nenhuma dessas respostas parece responder à pergunta que está sendo feita, então espero que isso ajude alguém no futuro.
Sim, você sempre pode mostrar 2 casas decimais, mas infelizmente isso não pode ser feito apenas com os atributos do elemento, você tem que usar JavaScript.
Devo salientar que isso não é ideal para números grandes, pois sempre forçará os zeros à direita, então o usuário terá que mover o cursor para trás em vez de excluir caracteres para definir um valor maior que 9,99
fonte
Este é um formatador rápido em JQuery que usa a
.toFixed(2)
função para duas casas decimais.Contras: você precisa ligar para isso sempre que o número de entrada for alterado para reformatá-lo.
Nota: por algum motivo, mesmo se uma entrada for do tipo 'número', o jQuery
val()
retorna uma string. Daí oparseFloat()
.fonte
Minha abordagem preferida, que usa
data
atributos para manter o estado do número:fonte
A primeira resposta me deu a solução, mas não gostei que a entrada do usuário fosse alterada imediatamente, então adicionei um atraso, o que, em minha opinião, contribui para uma melhor experiência do usuário
https://jsfiddle.net/908rLhek/1/
fonte
fonte
ui-number-mask
para angular, https://github.com/assisrafael/angular-input-maskssó isso:
Se você colocar um valor um por um ....
dígito por dígito
fonte
Dê uma olhada nisso :
fonte
Essa é a resposta correta:
fonte