jQuery计算器的独特“折扣”挑战

时间:2013-03-24 21:01:53

标签: jquery forms calculator

我一直在混淆这个......我有三个形式领域:个人,夫妻,总数。这是会议注册的成本计算器。

一个人(#individuals)的费用为50美元。一对夫妇(#couples)售价75美元。如果总人数超过3人,则可享受折扣优惠。每个人在折扣下花费40美元。因此,我们计算总人数,如果有3个或更多人,则为每个人申请40美元的新价格。在计算#individuals和#couples字段之间的总人数之前,#couples的值需要乘以2,因为每对夫妇有两个人。新的“折扣”#individuals价格为40美元,新的#couple价格为80美元。

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

我当前的代码,在#total字段中输出的数字不正确:

   $('#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 个答案:

答案 0 :(得分:1)

  1. 不要重复自己 - 只为每个字段拨打一次$('#element').val()

  2. 使用parseInt(val, 10)确保您的号码是数字而不是字符串。您的ind字段当前是一个字符串,当您将其“连接”到coup时会出错:

  3. e.g:

    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);