【问题标题】:How to format a text input as a decimal in jquery如何在jquery中将文本输入格式化为十进制
【发布时间】:2014-04-03 03:33:29
【问题描述】:

我有这个 jQuery 代码:

$('#amount').change(function() {
  $('#amount').val( $('#amount').val().toFixed(2) );
}); // end .change()

我需要它以十进制格式格式化输入。可以在jquery中完成吗?

示例: 在文本框中,

如果我输入5,我希望值显示为5.00

如果我输入5.1,我希望值显示为5.10

如果我输入5.12,我希望值显示为5.12

似乎是一个简单的需求。我必须遗漏一些东西,因为我无法想象 javascript 或 jquery 不提供执行此操作的函数。

【问题讨论】:

  • 十进制格式到底如何,你能举一些输入和输出的例子吗?

标签: jquery decimal


【解决方案1】:

元素值始终是字符串,而toFixed 仅适用于数字,因此您必须先将值转换为数字,然后再对其运行toFixed

$('#amount').on('change', function() {
    this.value = parseFloat(this.value).toFixed(2);
});

FIDDLE

【讨论】:

  • 感谢@adeneo。我正在走同样的路。很高兴你确认我的想法是正确的。感谢您的帮助
【解决方案2】:

以此为基础:

Math.round(num * 100) / 100

所以你的代码将是:

$('#amount').change(function() {
    $('#amount').val( Math.round($('#amount').val() * 100) / 100 );
});

【讨论】:

  • @H.Ferrence 当然,等待..:D
  • 它在我的脚本中不起作用@PraveenKumar 我输入了5 并得到了5
  • 这行得通:$('#amount').val('5.25'); 所以我至少向自己证明了 onChange() 是有效的。
  • @H.Ferrence - (5 * 100) / 100 仍然等于 5,所以这只适用于类似 5.222222 的东西,它会给出 5.22 等,但这通常是 toFixed 出现的地方,但是您已经在使用它,但您似乎仍然有问题,只是不清楚问题是什么?
  • 问题@adeneo 是,当我在文本框中输入5 时,我希望得到5.00,但我只得到5——这就是问题所在。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-24
  • 1970-01-01
  • 1970-01-01
  • 2017-02-01
  • 1970-01-01
  • 2011-04-15
相关资源
最近更新 更多