将每个文本框舍入到2个小数位

时间:2014-08-09 23:34:40

标签: javascript jquery rounding tofixed

这可能非常简单,但对于我的生活,我无法解决如何做到这一点。所以这里说:我有一个包含大量文本框的大表单,这些文本框都是基于货币的,因此需要四舍五入到小数点后两位。这些文本框的值都是由我编写的一些JavaScript函数动态生成的,我可以使用.toFixed(2);将它们向上/向下舍入到小数点后两位。然而,在计算出每个文本框的每个值之后,必须将其放入并且重复。我怎么能写一个简单的JavaScript(可以是jQuery)来定位所有文本框并将它们全部舍入到2个小数位?

感谢您的帮助:)

P.S很抱歉没有任何代码,但是没有任何代码可以显示,因为它全部被锁定在大功能中。但这就是我基本上所做的事情:

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?

4 个答案:

答案 0 :(得分:2)

可以拥有您调用的功能:

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

......然后随时调用它们。实例:http://jsbin.com/toyoc/1

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

答案 1 :(得分: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));
});

答案 2 :(得分:0)

另一种方法: 为什么不在计算结束时放置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);
 }

答案 3 :(得分:-3)

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