ユーザーの選択に基づいて値を合計し、製品の最終価格を取得するために、フォームに対して each ループを実行しています。難しいのは、特定のチェックボックス グループでは、次のような制限があることです。グループ A は、4 つ以上のチェックボックスがクリックされた後に価格に追加され始め、3 番目の項目の後にクリックされた値のみが追加されます。
以下は私が作成した関数で、私の問題の解決策を探しています:
var quantity = 1;
var removedProductPrice = false; //User can pick a variation of the same product, so the price changes to that selected variation (flag)
var product_price = parseFloat($("#product").val()); //Base product price
var totalProduct = product_price;
$(":input", "#productForm").each(function(){
if(this.type == 'checkbox' || this.type == 'radio'){
if(this.checked == true){
priceProtocol = $(this).attr('rel').split('_');
//priceProtocol[0]: 'variation/component/steady, priceProtocol[1]: number of choices
switch(priceProtocol[0]){
case 'variation':
removedProductPrice = true;
totalProduct = Number(totalProduct)+Number(this.value);
break;
case 'component':
totalProduct = Number(totalProduct)+Number(this.value);
break;
case 'steady':
//If the number of clicked checkboxes is greater than the limit, start adding to the price
if($("input[name='"+this.name+"']:checked").length > priceProtocol[1]){
totalProduct = Number(totalProduct)+Number(caller.val());
}
break;
}
}
}else if(this.id == 'product_quantity'){ quantity = this.value; }
});
//If a variation selected, change the price to that of the variation
if(removedProductPrice){ totalProduct = totalProduct-product_price; }
//Multiple by the selected quantity
totalProduct = Number(quantity)*totalProduct;
//Preview the final price
$("#current_product_price").html(totalProduct.toFixed(2));
}
上記のことをどのように達成できますか?