0

私はしばらくこれをいじっています...私には3つのフォームフィールドがあります:個人、カップル、合計。これは、会議登録のコスト計算ツールです。

一人(#individuals)は50ドルかかります。カップル(#couples)の費用は75ドルです。合計3名以上の方がご登録の場合は割引が適用されます。割引の下で一人当たり40ドルかかります。したがって、合計人数をカウントし、3人以上の場合は、1人あたり40ドルの新しい価格を適用します。#individualsフィールドと#couplesフィールドの間の合計人数をカウントする前に、カップルごとに2人いるため、#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);
   }
4

1 に答える 1

1
  1. 繰り返さないでください-$('#element').val()フィールドごとに1回だけ呼び出してください

  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);
于 2013-03-24T21:05:08.937 に答える