以下选择框允许用户选择他们希望为给定橄榄球比赛购买的门票数量。
用户有权购买多场橄榄球比赛的门票,因此存在查询循环。
如您所见,选择框的 id 属性有两个动态值——第一个“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>
因此,我需要 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”参数指定)。在这种情况下,每一行都是相同的匹配,但不同的类别。其他用户会看到不同的权利,这些权利可能适用于多个匹配/类别组合。.