4

我编写了一个to_money函数,以便格式化sub_total函数中的 'Price' 'Quantity' 和 'Total'并附加两个零 - 所以 2 变为 2.00,函数在这里:

 to_money: function(amount) {
      return Number(amount).toFixed(2) 
    },


sub_total: function() {
 var In = this
 return $$('.item').inject(0, function(sum, row) {
  var quantity = Number($F('Item' + row.id + 'Quantity'))
  var price = Number($F('Item' + row.id + 'Price'))
  var line_total = quantity * price
 $('Item' + row.id + 'Quantity').value = In.to_money(quantity) 
  $('Item' + row.id + 'Price').value = In.to_money(price)
  $('Item' + row.id + 'Total').update('£' + In.to_money(line_total)) In.to_money(line_total)) 
  return sum + line_total 
 })

我如何编写一个类似于格式化价格的函数“to money”的函数,而是一个格式化数量的函数,以确保在没有输入输入的情况下将默认小数点 1 作为数量的前缀。

因此函数sub_total中的行将调用新函数以在数量上运行:

 $('Item' + row.id + 'Quantity').value = In.to_decimal(quantity) 

函数看起来像这样吗?

to_decimal: function(amount) {
          return Number(amount).toFixed(0) 
        },
4

1 回答 1

3

尝试

to_decimal: function(amount) {
          var n = Number(amount);
          return (n && n>0 ? n : 1).toFixed(2);
}
In.to_decimal('');               //=> 1.00
In.to_decimal('bogusinput');     //=> 1.00
In.to_decimal(0);                //=> 1.00
In.to_decimal('23.1');           //=> 23.10
//note: Number autotrims the parameter
In.to_decimal('          45.3'); //=> 45.30
于 2012-05-05T08:12:09.243 回答