将每个文本框四舍五入到小数点后2位

Round every textbox to 2 decimal places

本文关键字:小数点 2位 四舍五入 文本      更新时间:2023-09-26

这可能真的很简单,但是我怎么也想不出怎么做。我有一个包含许多文本框的大表单,这些文本框都是基于货币的,所以需要四舍五入到小数点后2位。这些文本框的值都是由我编写的一些JavaScript函数动态生成的,我可以使用.toFixed(2);将它们四舍五入到小数点后2位。但是,在计算出每个文本框的每个值之后,必须输入这些内容,这变得很累人且重复。我怎么能写一个简单的JavaScript(可以是jQuery)的目标所有的文本框和四舍五入到小数点后2位?

谢谢你的帮助:)

p。很抱歉没有任何代码,但实际上没有任何代码可以展示,因为它都被锁定在大函数中。下面是我要做的:

function workOutSomeVal() {
    // lots of code to work out values and stuff
    var finalValue = some mathematical equation to work out value;
    var anotherValue = a different value;
    $(".some-textbox").val((finalValue).toFixed(2));
    $(".another-textbox").val((anotherValue).toFixed(2));
} // my question is, how could I get rid of .toFixed(2) and put in a generic statement somewhere to target all the textboxes?

可以调用一个函数来完成以下操作:

function roundTextBoxes() {
    $("input[type=text]").val(function() {
        return (+this.value).toFixed(2);
    });
}

…然后在它们发生变化时调用它。示例:http://jsbin.com/toyoc/1

这可能意味着有时,用户在查看页面时做心算会发现它不完全加起来…

你可以给所有你想要"舍入"的文本框一个共同的类,然后使用这个类选择然后将你的舍入逻辑应用到每个文本框。

// let's say all the roundable textboxes have the class "roundable"
$('.roundable').each(function() {
  var value = // some mathematical equation to work out value
  $(this).val((value).toFixed(2));
});

另一种方法:
为什么不把value.toFixed(2)放在计算的最后呢?

var finalValue = function(){
   // var value = some calculation  
   return value.toFixed();
}   

或者-如果你需要在其他地方的完整值,创建一个新的函数:

var finalValueView = function(){
     finalValue().toFixed(2);       
} 
function workOutSomeVal() {
     // ...
     $(".some-textbox").val(finalValueView);
 }

使用Math.round(num * 100) / 100