0

ユーザーの選択に基づいて値を合計し、製品の最終価格を取得するために、フォームに対して 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));  
 }

上記のことをどのように達成できますか?

4

1 に答える 1

0

4 つ以上のチェックボックスが選択された後にのみ価格を追加するには、選択したセレクターを使用できます。

if ($("#GroupAId option:selected").length > 4) {
...
}

3 番目のアイテムの後にクリックされたアイテムのみを追加するには、 indexメソッドを使用できる場合があります。インデックス > 2 (ゼロベース) のアイテムのみを追加します

<ul>
  <li id="foo">foo</li>
  <li id="bar">bar</li>
  <li id="baz">baz</li>
</ul>

...

var listItem = document.getElementById('bar');
alert('Index: ' + $('li').index(listItem));
//We get back the zero-based position of the list item:
//Would alert - Index: 1

それが役立つことを願っています

于 2012-10-19T11:12:38.363 に答える