0

次の選択ボックスを使用すると、ユーザーは特定のラグビーの試合で購入したいチケットの数を選択できます。

ユーザーがチケットを購入できるラグビーの試合が複数ある可能性があるため、クエリ ループが発生します。

ご覧のとおり、選択ボックスの id 属性には 2 つの動的な値があります。最初の「currentrow」は、処理している特定の選択ボックスを識別するのに役立ちます。「matchID」を追加したのは、ユーザーがトランザクションごとにマッチごとに 4 チケットを超えて購入できないことを示す新しいルールを実装しているためです。以前は、チケットを購入した試合の数に関係なく、取引ごとに 4 チケットが上限でした。

<cfloop query="qEntitlements">
     <select class="quantity" name="qty_#currentrow#_#matchID#" id="qty_#currentrow#_#matchID#">
          <cfloop from="0" to="#qEntitlements.qty#" index="i">
               <option value="#i#">#i#</option>
          </cfloop>
     </select>
</cfloop>

そのため、ユーザーが PER MATCH で選択したチケットの数を継続的にカウントし、特定の試合の制限に達した場合にアラートを発する jQuery が必要です。

以下の jQuery は、トランザクションごとに 4 チケットという古いルールで機能します (無関係な処理を削除するために単純化されています)。

function calcTotals(){
     var qty = 0;
     $('.quantity').each(function(){ 
          var thisline = thisid.split("_")[1];
          var thismatchid = thisid.split("_")[2]; // in preparation for new rule
          var thisqty = $('#qty_' + thisline + '_' + thismatchid  + ' option:selected').val();

          qty += Number(thisqty);

          // Limit to 4 tickets per order transaction
          // ToDo: Change this to 4 tickets per match per order
          if(qty > 4){
               alert('You are entitled to purchase a maximum of 4 tickets per order.');
               return false;
          } 
     })
}


$(document).ready(function(){   
     $(".quantity").change(function(e){
          calcTotals();
     })
})

このページで現在のシステムの動作を確認できます。

明確化のために編集

同じ試合に異なる座席カテゴリ (例: ゴールド、シルバー) が存在する可能性があるため、特定の試合の合計数量を集計する必要があります。OPに含めたサンプルページを参照してください。これは、指定されたユーザーに表示されるものです (ユーザーは、URL の「i」パラメーターによって指定されます)。この場合、各行は同じ一致ですが、カテゴリは異なります。他のユーザーには、複数の一致/カテゴリの組み合わせに対して異なる権利が表示されます。.

4

2 に答える 2

0

みたいな意味ですか?

簡単な質問ですが、ユーザーが 4 を超える数量を選択しないようにしたいだけなのに、なぜ値を「保存」する必要があるのでしょうか? その場合、ドロップダウンのオプションの数を制限してみませんか? ここであなたの必要性を誤解しているかもしれないと思っています。

 $('body').delegate('select[id*="qty_"]','onchange', function(){
   if($(this).val() > 4){
      // what do you want to have happen here IF they choose more than 4?
   }
 })

またはあなたのコードを使用するだけです:

 $('select[id*="qty_"]').change(function(){
    if($(this).val() > 4){
       alert("too many tickets selected for event: " + $(this).closest('tr').first('td').text());
    }
  })
于 2013-09-19T23:51:15.467 に答える