次の選択ボックスを使用すると、ユーザーは特定のラグビーの試合で購入したいチケットの数を選択できます。
ユーザーがチケットを購入できるラグビーの試合が複数ある可能性があるため、クエリ ループが発生します。
ご覧のとおり、選択ボックスの 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」パラメーターによって指定されます)。この場合、各行は同じ一致ですが、カテゴリは異なります。他のユーザーには、複数の一致/カテゴリの組み合わせに対して異なる権利が表示されます。.