쇼핑몰에서 옵션 가격을 반영해서 가격표시?
제목이 뭐 저따위로 밖에 생각이 나지 않는지.. 머리가 점점 썩어가나 보다. 이래서 무슨 코딩을 한다고.. ㅠ_ㅠ
이런 식으로 페이지에 구성을 했을 경우 옵션을 변경하게 되면 판매가격 부분이 그에 맞게 변하게 하고 싶어서..
점심 먹고 와서 삽질 중인데.. 이제야 뭔가 원하는 결과물이 나오게 되었다. 좀 더 기능면에서 보완해야 할 점이
있는데 이건 또 언제 해결할지.. 실력이 바닥을 기고 있어서 나도 정확히는 모르겠다는.. ^^;
jQuery each()를 이용해서 select 의 선택 값을 구해서 배열에 저장하고 loop가 끝나면 원래 상품과 다시 더하는
방법이다. 더 좋은 방법을 생각해보려고 했는데 도무지 생각지 나지 않더라는.. 이게 지금 내가 할 수 있는 최선!!
var sell_price = parseInt(“<?=$it[it_amount]?>”);
var sell_price_sum = 0;
var opt_price = 0;
$(function() {
$(‘form[name=fitem] select’).change(function() {
PriceCalculate();
});
$(‘input[name=ct_qty]’).keyup(function() {
PriceCalculate();
});
});
function PriceCalculate()
{
var optPrice = new Array();
var ct_qty = $(‘input[name=ct_qty]’).val();
if(ct_qty.search(/[^0-9]/) != -1) {
alert(“구매수량은 1이상의 숫자로 입력해 주십시오.”);
$(‘input[name=ct_qty]’).val(1);
return false;
}
$(‘form[name=fitem] select’).each(function() {
var opt_val = $(this).val();
var mark_pos = opt_val.search(/([+-]{1}[0-9])/g);
if(mark_pos != -1) {
opt_price = parseInt(opt_val.substring(mark_pos));
} else {
opt_price = 0;
}
optPrice.push(opt_price);
});
sell_price_sum = sell_price;
for(i = 0; i < optPrice.length; i++) {
sell_price_sum += optPrice[i];
}
if(ct_qty > 0) {
$(‘#SellPrice’).text(number_formats(sell_price_sum * ct_qty) + ” 원 (VAT포함)”);
}
}
function number_formats(input){
var input = String(input);
var reg = /(-?d+)(d{3})($|.d+)/;
if(reg.test(input)){
return input.replace(reg, function(str, p1,p2,p3){
return number_format(p1) + “,” + p2 + “” + p3;
}
);
} else {
return input;
}
}
</script>
이제 남은 것은 품절이나 가격이 입력되어 있지 않을 경우.. 지금 작업 중인 쇼핑몰에서는 이것도 필요.. 이 때는
예외 처리가 되도록 하는 정도가 아닐까 싶다. 이건 좀 쉽게 해결을 해야할텐데.. 실력 미천하니 이것도 쉽지 않을 듯!
덧, 코드에 보면 옵션 가격 계산하는 부분에 정규식이 쓰였는데.. 이건 옵션 값이 선택옵션+가격 그러니까 RED+2000
이런 식으로 되어 있기 때문이다. 근데 저기에 쓰인 정규식은 제대로 한 것인지는 전혀 모르겠다. 정규식 어려워!!!