我有一个如下所示的页面。某些数据来自数据库,并且数据库数据旁边还有表单字段。一切都是动态的,所以我们也需要对每个领域进行验证。
请检查此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的花费成本自动计算后,总花费也应该在运行中计算。
我需要想法,如果可能的话还需要更多的帮助。
答案 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);
});