Just wanted to let everyone know that there is a great tutorial on how to auto update the price of things when the option changes on the product page. http://www.jackwdavis.com/2012/02/22/au ... selection/.
this tutorial is great but it does not work so well with multiple options. I thought i would share the code i came up with.
enjoy.
this goes in header.tpl in replace of the stuff jack had put there. you still need to read his tutorial to set up product.tpl
Code: Select all
<script type="text/javascript">
$(document).ready(function() {
$('.option').change(function() {
var OriginalPrice = $('#thisIsOriginal').text();
var OriginalCurrency = OriginalPrice.substring(0, 1);
OriginalPrice = OriginalPrice.substring(1);
OriginalPrice = OriginalPrice.replace(",","");
var newPriceValue = $('.option :selected').text();
var iChars = "$";
if(newPriceValue.match(/\d+\./g) != null){
var position1 = newPriceValue.indexOf("(");
var position2 = newPriceValue.indexOf(")");
position1 = position1+3;
var finalPriceValue = newPriceValue.substring(position1, position2);
var txt = newPriceValue;
txt = txt.replace(/,/g, '');
array=txt.match(/(?!$)\d+(\.\d+)/g);
var total = 0;
for (var ii = 0; ii < array.length; ii++) {
total += array[ii];
}
if(1 < array.length)
{
var newtotalfinal = eval(array.join('+'));
if(newPriceValue.match(/\d+\./g)== null)
{
newtotalfinal = "0";
}
OriginalPrice = Number(OriginalPrice);
newtotalfinal = Number(newtotalfinal);
newtotalfinal = newtotalfinal + OriginalPrice
newtotalfinal = newtotalfinal.toFixed(2);
newtotalfinal = newtotalfinal.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
$('#priceUpdate').text(OriginalCurrency + newtotalfinal);
} else
{
if(newPriceValue.match(/\d+\./g)== null)
{
finalPriceValue = "0";
}
finalPriceValue = parseFloat(finalPriceValue.replace(",", "")) + parseFloat(OriginalPrice.replace(",", ""));
finalPriceValue = finalPriceValue.toFixed(2);
newtotalfinal = finalPriceValue.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
$('#priceUpdate').text(OriginalCurrency + newtotalfinal);
}
}
else {
var finalPriceValue = "0";
OriginalPrice = OriginalPrice.replace(",","");
OriginalPrice = Number(OriginalPrice);
newtotalfinal = Number(finalPriceValue);
newtotalfinal = newtotalfinal + OriginalPrice;
newtotalfinal = newtotalfinal.toFixed(2);
newtotalfinal = newtotalfinal.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
$('#priceUpdate').text(OriginalCurrency + newtotalfinal);
}
});
});
</script>