Existe-t-il un moyen de formater une input[type='number']
valeur pour toujours afficher 2 décimales?
Exemple: je veux voir 0.00
au lieu de 0
.
Résolu en suivant les suggestions et en ajoutant un morceau de jQuery pour forcer le format sur les entiers:
parseFloat($(this).val()).toFixed(2)
robot_speed = parseFloat(robot_speed).toFixed(2)
change
méthode pour le déclencher à chaque fois que le champ change: stackoverflow.com/a/58502237/2056125Vous ne pouvez pas vraiment, mais vous pourriez être à mi-chemin:
la source
L'utilisation de l'
step
attribut l'activera . Il détermine non seulement combien il est censé faire du cycle, mais aussi les nombres autorisés. L'utilisationstep="0.01"
devrait faire l'affaire, mais cela peut dépendre de la façon dont le navigateur adhère à la norme.la source
input[type="text"]
toutes les cloches et sifflets natifs qui sontinput[type="number"]
complètement réimplémentés, ou remplacent ce champ par un autre pour afficher la valeur en fonction de l'état de l'élément.Les solutions qui utilisent
input="number"
step="0.01"
fonctionnent très bien pour moi dans Chrome, mais ne fonctionnent pas dans certains navigateurs, en particulier Frontmotion Firefox 35 dans mon cas .. que je dois prendre en charge.Ma solution était de jQuery avec le plugin jQuery Mask d'Igor Escobar, comme suit:
Cela fonctionne bien, bien sûr, il faut vérifier la valeur soumise par la suite :) REMARQUE, si je n'avais pas à le faire pour la compatibilité du navigateur, j'utiliserais la réponse ci-dessus de @Rich Bradshaw.
la source
type
attribut de l'entrée estnumber
outext
. S'il retournetext
même si le code HTML est écrit comme cela,number
le navigateur ne prend pas en charge ce type, et y accrocher ce comportement est une action appropriée.Sur la base de cette réponse de @Guilherme Ferreira, vous pouvez déclencher la
parseFloat
méthode à chaque fois que le champ change. Par conséquent, la valeur affiche toujours deux décimales, même si un utilisateur modifie la valeur en tapant manuellement un nombre.la source
change()
fonction sera déclenchée dans le court laps de temps entre l'entrée de l'utilisateur et le clic du bouton d'envoi. Par conséquent, cela ne devrait pas être un problème.Cela fonctionne pour appliquer un maximum de 2 décimales sans arrondir automatiquement à 2 positions si l'utilisateur n'a pas fini de taper.
la source
Si vous êtes arrivé ici en vous demandant simplement comment limiter à 2 décimales, j'ai une solution javascript native:
Javascript:
HTML:
Notez que cela ne peut pas AFAIK, se défendre contre ce bug de chrome avec l'entrée de nombre.
la source
Je sais que c'est une vieille question, mais il me semble qu'aucune de ces réponses ne semble répondre à la question posée, alors j'espère que cela aidera quelqu'un à l'avenir.
Oui, vous pouvez toujours afficher 2 décimales, mais malheureusement, cela ne peut pas être fait uniquement avec les attributs d'élément, vous devez utiliser JavaScript.
Je dois souligner que ce n'est pas idéal pour les grands nombres car cela forcera toujours les zéros de fin, de sorte que l'utilisateur devra déplacer le curseur en arrière au lieu de supprimer des caractères pour définir une valeur supérieure à 9,99
la source
Il s'agit d'un formateur rapide dans JQuery utilisant la
.toFixed(2)
fonction pour deux décimales.Inconvénients: vous devez l'appeler chaque fois que le numéro d'entrée est modifié pour le reformater.
Remarque: pour une raison quelconque, même si une entrée est de type «nombre», jQuery
val()
renvoie une chaîne. D'où leparseFloat()
.la source
Mon approche préférée, qui utilise des
data
attributs pour conserver l'état du nombre:la source
La meilleure réponse m'a donné la solution, mais je n'aimais pas que l'entrée utilisateur soit modifiée immédiatement, j'ai donc ajouté un délai qui, à mon avis, contribue à une meilleure expérience utilisateur.
https://jsfiddle.net/908rLhek/1/
la source
la source
ui-number-mask
pour angulaire, https://github.com/assisrafael/angular-input-masksseulement ça:
Si vous mettez la valeur une par une ...
chiffre par chiffre
la source
Jetez un œil à ceci :
la source
Voici la bonne réponse:
la source