2014-02-12 6 views
0

Я работаю над проектом SimpleCart, который требует много вариантов, которые изменяют цену товара. Каждый вариант добавляет определенную сумму к базовой цене товара. Например:SimpleCart js - изменить цену по опции select

вещь базовая цена = $ 10

выпадающее меню 1:

  • варианты 1,2,3 добавить $ 0
  • варианты 4,5,6 добавить $ 1
  • варианты 7 , 8,9 добавить $ 2

... и так далее для нескольких выпадающих меню в нескольких пунктах с различными базовыми ценами.

simplecartjs.org документация предполагает событие beforeAdd, такие как это:

simpleCart.bind('beforeAdd' , function(item){ 
if(item.get('size') == 'Small'){ 
item.price(10); 
} else if(item.get('size') == 'Large'){ 
item.price(12); 
} 
}); 

Как бы вы использовать что-то похожее на это, чтобы добавить определенное количество на базовую цену, а не определять цену комплекта для каждого варианта ?

Вот несколько упрощенный пример HTML-код (мой проект на самом деле имеет 70+ варианты в одном раскрывающемся списке):

<div class="simpleCart_shelfItem"> 
<h2 class="item_name">item</h2> 
<select class="item_size"> 
<option value="small">small</option> 
<option value="medium">medium</option> 
<option value="large">large</option> 
</select> 
<select class="item_length"> 
<option value="short">short</option> 
<option value="long">long</option> 
</select> 
<input value="1" class="item_Quantity" type="text"> 
<span class="item_price">$10</span> 
<a class="item_add" href="javascript:;">add to cart</a></p> 
</div> 

ответ

0

я бы, вероятно, пойти об этом так же, как в документации, поставляемой делает, но с добавление базовой цены переменной, которую вы можете использовать, чтобы добавить дополнительные затраты. Применение переменной внутри функции будет поддерживать ее локализацию, поэтому, если у вас есть базовая цена в другой функции, она не будет беспокоить код.

* Примечание. Я не тестировал его, просто подумал о том, как бы я это сделал.

simpleCart.bind('beforeAdd', function (item) { var basePrice = 10; if (item.get('size') == 'Small') { item.price(basePrice + 2); } else if (item.get('size') == 'Large') { item.price(basePrice + 2); } else if (item.get('size') == 'Long' && item.get('otherProperty')) { item.price(basePrice + 9); } });

+0

Это то, что я могу ссылаться с каждым из моих вещей, той лишь разницей, базовая цена? –

+0

Вы можете добавить атрибут, а затем в css для своей корзины вы можете сделать класс атрибута не отображаемым. '{attr:" variable1 ", label:" VariableName "} // этот верхний скрипт идет в простой настройке .item-variable1 {display: none;}' –

Смежные вопросы