0

这可能真的很简单,但对于我的生活,我无法弄清楚如何去做。所以这里是:我有一个带有很多文本框的大表单,这些文本框都是基于货币的,因此需要四舍五入到小数点后 2 位。这些文本框的值都是由我编写的一些 JavaScript 函数动态生成的,我可以使用.toFixed(2);它们向上/向下舍入到小数点后 2 位。但是,在计算出每个文本框的每个值之后必须将其放入会变得很累和重复。我如何编写一段简单的 JavaScript(可以是 jQuery)来定位所有文本框并将它们全部舍入到小数点后 2 位?

谢谢你的帮助 :)

PS 抱歉缺少任何代码,但实际上没有任何可显示的,因为它全部锁定在大函数中。但这就是我本质上在做的事情:

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

4 回答 4

2

可以有一个你调用的函数来做到这一点:

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

...然后在它们中的任何一个发生变化时调用它。现场示例:http: //jsbin.com/toyoc/1

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

于 2014-08-09T23:39:19.600 回答
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));
});
于 2014-08-09T23:43:50.340 回答
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);
 }
于 2014-08-09T23:45:31.433 回答
-3

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

于 2014-08-09T23:41:24.063 回答