¿Hay alguna forma de formatear un input[type='number']
valor para que siempre muestre 2 lugares decimales?
Ejemplo: quiero ver en 0.00
lugar de 0
.
Resuelto siguiendo las sugerencias y agregando una pieza de jQuery para forzar el formato en enteros:
parseFloat($(this).val()).toFixed(2)
robot_speed = parseFloat(robot_speed).toFixed(2)
change
método para activarlo cada vez que cambie el campo: stackoverflow.com/a/58502237/2056125Realmente no puedes, pero tu paso a mitad de camino podría ser:
fuente
El uso del
step
atributo lo habilitará . No solo determina cuánto se supone que debe ciclar, sino también los números permitidos. El usostep="0.01"
debería funcionar , pero esto puede depender de cómo el navegador se adhiera al estándar.fuente
input[type="text"]
con todas las campanas y silbidos nativos que vieneninput[type="number"]
completamente reimplificados, o cambiando este campo por otro para mostrar el valor según el estado del elemento.Las soluciones que utilizo
input="number"
step="0.01"
funcionan muy bien para mí en Chrome, sin embargo, no funcionan en algunos navegadores, específicamente Frontmotion Firefox 35 en mi caso .. que debo admitir.Mi solución fue jQuery con el complemento jQuery Mask de Igor Escobar, de la siguiente manera:
Esto funciona bien, por supuesto, uno debe verificar el valor enviado después :) NOTA, si no tuviera que hacer esto para la compatibilidad del navegador, usaría la respuesta anterior de @Rich Bradshaw.
fuente
type
atributo de la entrada esnumber
otext
. Si regresatext
a pesar de que el HTML está escrito como,number
entonces el navegador no admite ese tipo, y vincular este comportamiento a él es una acción apropiada.Con base en esta respuesta de @Guilherme Ferreira, puede activar el
parseFloat
método cada vez que cambia el campo. Por lo tanto, el valor siempre muestra dos lugares decimales, incluso si un usuario cambia el valor escribiendo manualmente un número.fuente
change()
función se activará en el corto tiempo entre la entrada del usuario y el clic del botón de envío. Por lo tanto, esto no debería ser un problema.Esto funciona para aplicar un máximo de 2 lugares decimales sin redondear automáticamente a 2 lugares si el usuario no ha terminado de escribir.
fuente
Si aterrizó aquí preguntándose cómo limitar a 2 lugares decimales , tengo una solución nativa de JavaScript:
Javascript:
HTML:
Tenga en cuenta que esto no puede AFAIK, defiéndase contra este error de Chrome con la entrada de número.
fuente
Sé que esta es una pregunta antigua, pero me parece que ninguna de estas respuestas parece responder a la pregunta que se hace, así que espero que esto ayude a alguien en el futuro.
Sí, siempre puede mostrar 2 lugares decimales, pero desafortunadamente no se puede hacer solo con los atributos del elemento, debe usar JavaScript.
Debo señalar que esto no es ideal para números grandes, ya que siempre forzará los ceros finales, por lo que el usuario tendrá que mover el cursor hacia atrás en lugar de eliminar caracteres para establecer un valor superior a 9,99
fuente
Este es un formateador rápido en JQuery que usa la
.toFixed(2)
función para dos lugares decimales.Contras: debe llamar a esto cada vez que se cambia el número de entrada para reformatearlo.
Nota: por alguna razón, incluso si una entrada es de tipo 'número', jQuery
val()
devuelve una cadena. De ahí elparseFloat()
.fuente
Mi enfoque preferido, que usa
data
atributos para mantener el estado del número:fuente
La respuesta principal me dio la solución, pero no me gustó que la entrada del usuario se cambiara de inmediato, así que agregué un retraso que, en mi opinión, contribuye a una mejor experiencia del usuario.
https://jsfiddle.net/908rLhek/1/
fuente
fuente
ui-number-mask
para angular, https://github.com/assisrafael/angular-input-maskssolo esto:
Si pones valor uno a uno ...
dígito por dígito
fuente
Eche un vistazo a esto :
fuente
Esta es la respuesta correcta:
fuente