javascript - 表单 txt 字段的 jQuery 计算

标签 javascript jquery

在我的 jQuery 方面寻求一些帮助,(我知道它不是最好的)

目前有一个表格,分成两部分, 左边是 Assets list ,右边是负债 有点像账户的 Assets 负债表,见下图

Balance sheet form

刚才用的jquery,有点乱..(sorry) 此代码将计算每个 keyup 请求的字段总计,这似乎工作正常,

jQuery('#ass_cash, #ass_liquid, #ass_lifeinsu, #ass_covvalue, #ass_la1, #ass_la2, #ass_la3, #ass_realestate, #ass_auto1total, #ass_auto2total, #lib_mortgage, #lib_bankloan1, #lib_bankloan2, #lib_loansinsucomp, #lib_loanscreditunion, #lib_creditcards, #lib_od1, #lib_od2, #lib_od3, #lib_rent, #lib_mortgagemthpmt, #lib_bankloan1mthpmt, #lib_bankloan2mthpmt, #lib_loansinsucompmthpmt, #lib_loanscreditunionmthpmt, #lib_creditcardsmthpmt, #lib_od1mthpmt, #lib_od2mthpmt, #lib_od3mthpmt, #lib_rentmthpmt').keyup( function(){

// ASSESTS
var ass_cash = jQuery("#ass_cash").val();
var ass_liquid = jQuery("#ass_liquid").val();
var ass_lifeinsu = jQuery("#ass_lifeinsu").val();
var ass_covvalue = jQuery("#ass_covvalue").val();
var ass_la1 = jQuery("#ass_la1").val();
var ass_la2 = jQuery("#ass_la2").val();
var ass_la3 = jQuery("#ass_la3").val();
var ass_realestate = jQuery("#ass_realestate").val();
var ass_auto1total = jQuery("#ass_auto1total").val();
var ass_auto2total = jQuery("#ass_auto2total").val();
var ass_total = jQuery("#ass_total").val();

if(ass_cash==''){ ass_cash = 0; }
if(ass_liquid==''){ ass_liquid = 0; }
if(ass_lifeinsu==''){ ass_lifeinsu = 0; }
if(ass_covvalue==''){ ass_covvalue = 0; }
if(ass_la1==''){ ass_la1 = 0; }
if(ass_la2==''){ ass_la2 = 0; }
if(ass_la3==''){ ass_la3 = 0; }
if(ass_realestate==''){ ass_realestate = 0; }
if(ass_auto1total==''){ ass_auto1total = 0; }
if(ass_auto2total==''){ ass_auto2total = 0; }

var asssubtotal = parseInt(ass_cash) + parseInt(ass_liquid) + parseInt(ass_lifeinsu) + parseInt(ass_covvalue);

asssubtotal = asssubtotal + parseInt(ass_la1) + parseInt(ass_la2) + parseInt(ass_la3) + parseInt(ass_realestate);

asssubtotal = asssubtotal + parseInt(ass_auto1total) + parseInt(ass_auto2total);

var asstotal = jQuery('#ass_total');
asstotal.val(asssubtotal);

// LIABILITIES
var lib_mortgage = jQuery("#lib_mortgage").val();
var lib_bankloan1 = jQuery("#lib_bankloan1").val();
var lib_bankloan2 = jQuery("#lib_bankloan2").val();
var lib_loansinsucomp = jQuery("#lib_loansinsucomp").val();
var lib_loanscreditunion = jQuery("#lib_loanscreditunion").val();
var lib_creditcards = jQuery("#lib_creditcards").val();
var lib_od1 = jQuery("#lib_od1").val();
var lib_od2 = jQuery("#lib_od2").val();
var lib_od3 = jQuery("#lib_od3").val();
var lib_rent = jQuery("#lib_rent").val();

if(lib_mortgage==''){ lib_mortgage = 0; }
if(lib_bankloan1==''){ lib_bankloan1 = 0; }
if(lib_bankloan2==''){ lib_bankloan2 = 0; }
if(lib_loansinsucomp==''){ lib_loansinsucomp = 0; }
if(lib_loanscreditunion==''){ lib_loanscreditunion = 0; }
if(lib_creditcards==''){ lib_creditcards = 0; }
if(lib_od1==''){ lib_od1 = 0; }
if(lib_od2==''){ lib_od2 = 0; }
if(lib_od3==''){ lib_od3 = 0; }
if(lib_rent==''){ lib_rent = 0; }

var libsubtotal = parseInt(lib_mortgage) + parseInt(lib_bankloan1) + parseInt(lib_bankloan2) + parseInt(lib_loansinsucomp);

libsubtotal = libsubtotal + parseInt(lib_loanscreditunion) + parseInt(lib_creditcards) + parseInt(lib_od1) + parseInt(lib_od2);

libsubtotal = libsubtotal + parseInt(lib_od3) + parseInt(lib_rent);

var lib_subtotal = jQuery('#lib_subtotal');                 lib_subtotal.val(libsubtotal);                      

// MONTHLY PAYMENTS
var lib_mortgagemthpmt = jQuery("#lib_mortgagemthpmt").val();
var lib_bankloan1mthpmt = jQuery("#lib_bankloan1mthpmt").val();
var lib_bankloan2mthpmt = jQuery("#lib_bankloan2mthpmt").val();
var lib_loansinsucompmthpmt = jQuery("#lib_loansinsucompmthpmt").val();
var lib_loanscreditunionmthpmt = jQuery("#lib_loanscreditunionmthpmt").val();
var lib_creditcardsmthpmt = jQuery("#lib_creditcardsmthpmt").val();
var lib_od1mthpmt = jQuery("#lib_od1mthpmt").val();
var lib_od2mthpmt = jQuery("#lib_od2mthpmt").val();
var lib_od3mthpmt = jQuery("#lib_od3mthpmt").val();
var lib_rentmthpmt = jQuery("#lib_rentmthpmt").val();

if(lib_mortgagemthpmt==''){ lib_mortgagemthpmt = 0; }
if(lib_bankloan1mthpmt==''){ lib_bankloan1mthpmt = 0; }
if(lib_bankloan2mthpmt==''){ lib_bankloan2mthpmt = 0; }
if(lib_loansinsucompmthpmt==''){ lib_loansinsucompmthpmt = 0; }
if(lib_loanscreditunionmthpmt==''){ lib_loanscreditunionmthpmt = 0; }
if(lib_creditcardsmthpmt==''){ lib_creditcardsmthpmt = 0; }
if(lib_od1mthpmt==''){ lib_od1mthpmt = 0; }
if(lib_od2mthpmt==''){ lib_od2mthpmt = 0; }
if(lib_od3mthpmt==''){ lib_od3mthpmt = 0; }
if(lib_rentmthpmt==''){ lib_rentmthpmt = 0; }

var lib_surplus = jQuery('#lib_surplus');
if(lib_surplus==''){ lib_surplus = 0; }

var subtotal = parseInt(lib_mortgagemthpmt) + parseInt(lib_bankloan1mthpmt) + parseInt(lib_bankloan2mthpmt) + parseInt(lib_loansinsucompmthpmt);

subtotal = subtotal + parseInt(lib_loanscreditunionmthpmt) + parseInt(lib_creditcardsmthpmt) + parseInt(lib_od1mthpmt) + parseInt(lib_od2mthpmt);

subtotal = subtotal + parseInt(lib_od3mthpmt) + parseInt(lib_rentmthpmt);

var totalmthpmt = jQuery('#lib_totalmthpmt');
totalmthpmt.val(subtotal);

var assets_total = jQuery('#ass_total').val();
var lib_subtotal  = jQuery('#lib_subtotal').val();
var lib_surplus  = jQuery('#lib_surplus');

if(assets_total==''){ assets_total = 0; }
if(lib_subtotal==''){ lib_subtotal = 0; }
if(lib_surplus==''){ lib_surplus = 0; }

var surplus = assets_total - lib_subtotal;
lib_surplus.val(surplus);

// THIS IS THE PART THAT ISNT WORKING               
//surplus/deficit
//var lib_total = jQuery('#lib_total').val();
//if(lib_total==''){ lib_total = 0; }
//var lib_totalmthpmt = jQuery('#lib_totalmthpmt').val();
//if(lib_totalmthpmt==''){ lib_totalmthpmt = 0; }

//var surplustotal = lib_total - lib_totalmthpmt;
//jQuery('#mthsurplus').val(surplustotal);
});

您可以看到导致上述问题的部分,它是小计(减去)盈余之间的计算以生成总计,

Assets 的每个字段都有一个类 .asset 每个 libability 都有 class .liability 每个月付款字段都有类.liabilitymth

我试过执行 jQuery('.asset').each(function() 并尝试在 Assets 字段中生成总计,其他 2 个部分也是如此,

灰色框是“只读”的,计算应该出现。

Assets :页面左侧的总数将是总 Assets 。 负债:“小计”将反射(reflect)负债栏的总和。 盈余:这将代表 Assets 和负债余额列之间的差异(负“-”或正“+”)。

总计(右侧):这是为了创建“ Assets 负债表”效果,因此当您查看它时,计算结果应反射(reflect)与 Assets 侧(左侧)上的“总计”相同的数字。

MONTHLY-SURPLUS/DEFICIT:这应该反射(reflect)总收入与“每月付款”列的总数相比的净差,无论是负数还是正数(从“就业”选项卡中找到的图)。

这是我的 jQuery 完全失败的地方,必须有一种更简单的方法来计算字段总数,任何人都可以对此有所了解,或者更好地使用代码,而不是将它们全部包装在一个非常大的 keyup 请求:)

最佳答案

这可以让您抢先一步:

var totalAss = 0;
jQuery('.asset').each(function(){
    var value = parseFloat(this.value);
    if (value)
        totalAss += value;
});
jQuery('#ass_total').val(totalAss);

关于javascript - 表单 txt 字段的 jQuery 计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10350393/

相关文章:

javascript - 将按键发送到表单字段

javascript - 从虚拟字符串中获取数字

javascript - 如何通过 jquery/javascript 插件验证和美化 JSON

javascript - 文本随机播放 JQuery/Javascript

javascript - 推送 document.ready 回调 : is it possible?

javascript - 检测键盘上 "next track"按钮的按下?

javascript - 如何将自定义过滤器参数添加到已经对 beforeRequest 进行过滤的 MvcJqGrid postData?

javascript - setTimeout 在循环中检查边界变化

javascript - lodash 中的独特联合

javascript - 使用 Javascript 的响应式菜单,问题