如何在文本字段中获得excel函数的功能?

时间:2013-01-21 06:46:42

标签: php javascript jquery

我有一个如下所示的页面。某些数据来自数据库,并且数据库数据旁边还有表单字段。一切都是动态的,所以我们也需要对每个领域进行验证。

请检查此http://jsbin.com/efinak/22/edit

Total Spent Cost: ((t1*100+t2*200)*x%+(t3*110)*y%)spent for A + spent for B

Client : A

product        No of Hours      Avg Rate/Hour       Cost
A1                  t1              100             t1*100
A2                  t2              200             t2*200

Total Cost:                                         t1*100+t2*200
Percentage(%):                                          x
Spent Cost:                                         (t1*100+t2*200)*x%

Client : B

product        No of Hours      Avg Rate/Hour       Cost
B1                  t3              110             t3*100


Total Cost:                                         t3*110
Percentage(%):                                        y
Spent Cost:                                         (t3*110)*y%

在上面的示例客户端中,产品和小时数将来自数据库。我保留了平均费率/小时的文本字段和费用的文本字段。

为什么我在问题中提到了excel的功能性,我将在这里解释。 如果假设我设置平均费率/小时文本字段,则应自动计算成本而不进行任何重定向。同样,如果设置成本,则应自动计算平均费率/小时。

计算成本后,应自动计算总成本。与上述百分比相比,还有一个文本字段,该字段也将由用户设置为某个值。基于此,您需要花费成本。

我需要每件事都要这件事。一旦每个cleint的花费成本自动计算后,总花费也应该在运行中计算。

我需要想法,如果可能的话还需要更多的帮助。

2 个答案:

答案 0 :(得分:1)

如果每个客户端具有相同的聚合函数,则可以创建一个javascript类并将其附加到每个表,将计算绑定到输入字段的更改事件。

你可以制作一个像这样的jquery插件:(我没有接近完成它,但它是一个开始)

你必须在每一行和项目中添加类,这样你就可以在dom中使用jquery更容易地识别它,但最终它会更清晰。

(function($){

   var Client = function(el){
       var $table = $(el);
     $.each($('.product-row'),function(row){
       var $row = $(row);
       //do the product total calculations here and bind it
     });
     $.each($('.total-row'),function(row){
       //bind your total calculation
     });
      //do this for discount and final rows also 


       $table.data('Client', this);
   };

   $.fn.client = function(){
      return this.each(function(){
         (new Client(this));
      });
   };


})(jQuery);

$(document).ready(function(){
 $('.client-table').client();
});

答案 1 :(得分:1)

您可以使用jquery脚本。我举一个简短的例子,你可以从中了解这背后的基本逻辑。假设您有4个字段。 A,B,C和D具有适当的类名。

这里A和B来自数据库,C是输入字段,D是输入字段,用于最终答案。 您可以自动计算D,如下所示。

$(document).ready(function() {
     $('.class_C').live('change', function() {
          var A = $('.class_A').val();
          var B = $('.class_B').val();
          var C = $('.class_C').val();

          // Calculate D as per A, B and C.
          var D = A + B * C / 50;

          // Put new value in to D field.
          $('.class_D').val(D);
     });
})

修改::

检查:http://jsbin.com/efinak/27/edit

$('input[name="quantity"]').change(function() {   
  var total = 0;
  $('input[name="price"]').map(function(i,n) {
    total += Number(n.value);
  });
  $('input[name="total"]').val(total);
});