2013-03-24 68 views
0

我一直在混淆这一段时间......我有三个表单域:个人,夫妻,总计。这是会议注册的成本计算器。jQuery计算器的独特“折扣”挑战

一个人(#个人)花费50美元。一对夫妇(#couples)花费75美元。如果总共有3个以上的用户注册,则会有折扣。根据折扣,每人的价格为40美元。因此,我们计算总人数,如果有3人或更多人,则向每个人申请40美元的新价格。在计算#个人和#couples字段之间的总人数之前,#couples的值需要乘以2,因为每对情侣有两个人。新的'折扣'#个人价格是40美元,新的#couple价格是80美元。

我的问题只是“我哪里出错了?”。任何见解都非常感谢。

我当前的代码,这是在#合计领域产生不正确的数字:

$('#individuals').change(compute); 
    $('#couples').change(compute); 
    function compute() { 
     var ind = $('#individuals').val(); // number of individuals 
     var coup = $('#couples').val()*2; // number of people in a couple (2) 
     var people = ind + coup; // add up the total people 
     if (people >= 3) {  
     var a = $('#individuals').val()*40; // discount price of an individual 
     var b = $('#couples').val()*80; // discount price of couple 
     } 
     else { 
     var a = $('#individuals').val()*50; // normal price of an individual 
     var b = $('#couples').val()*75; // normal price of couple 
     } 
     var total = a + b; 
     $('#total').val(total); 
    } 

回答

1
  1. 不要重复自己 - 只打一个电话,到$('#element').val()每个字段

  2. 使用parseInt(val, 10)以确保您的号码是数字而不是字符串。你ind场目前是一个字符串,就会导致错误当你“串联”它coup

如:

function compute() { 
    var ind = parseInt($('#individuals').val(), 10); // number of individuals 
    var coup = parseInt($('#couples').val(), 10); // number of couples 
    var people = ind + 2 * coup;      // add up the total people 
    var total; 
    if (people >= 3) { 
    total = 40 * people; 
    } else { 
    total = 50 * ind + 75 * coup; 
    } 
    $('#total').val(total); 
} 

$('#individuals,#couples').on('change', compute); 
+0

谢谢你 - 这个伟大的工程,并帮助我理清一些地区当涉及到jQuery时,我无知。 – lgnmt 2013-03-25 11:52:19

+0

请也看到更新,恕我直言是一种更清晰的表达你的“折扣”逻辑的方式。 – Alnitak 2013-03-25 12:02:30