콤마에 관해 질문있습니다.
본문
<?php
for ($i=0; $row=sql_fetch_array($result); $i++) {
?>
<li class="cart_goods">
<div class="cart_goods_detail">
<div class="cgd_top">
<label>
<input type="hidden" name="ct_chk[<?php echo $i; ?>]" value="1" id="ct_chk_<?php echo $i; ?>">
<label for="ct_chk_<?php echo $i; ?>"><span></span><b class="sound_only">상품선택</b></label>
<span class="goods_name"><?php echo $it_name; ?></span>
</label>
</div>
<div class="cgd_contents">
<div class="block">
<section id="fregister_private">
<table>
<colgroup>
<col style="width:15%">
<col style="width:25%">
<col style="width:30%">
<col style="width:30%">
</colgroup>
<thead>
<tr>
<th></th>
<th>구매수량</th>
<th>정상가</th>
<th>소계</th>
</tr>
</thead>
<tbody>
<tr>
<td class="img_area"><?php echo $image; ?></td>
<td>
<input type="text" name="ct_qty[<?php echo $row['it_id']; ?>][]" id="ct_qty_<?php echo $i; ?>" class="qty input" placeholder="0"> 개
</td>
<td>
<input type="text" name="groupbuy_price[<?php echo $i; ?>]" id="groupbuy_price_<?php echo $i; ?>" class="unit input2" value="<?php echo $row['it_price']; ?>"> 원
</td>
<td>
<input type='text' name="groupbuy_total[<?php echo $i; ?>]" id="groupbuy_total_<?php echo $i; ?>" readonly class='amount input2' placeholder="0"> 원
</td>
</tr>
</tbody>
</table>
</section>
</div>
</div>
</div>
</li>
<?php
} // for 끝
?>
<ul class="list list4 total">
<li class="th">총 상품금액</li>
<li class="td"><span class="sum_price settle_price"><input type="text" name="total_price" readonly class="total_price input3" placeholder="0"></span> 원</span>
</ul>
<script>
function comma(str) {
str = String(str);
return str.replace(/(\d)(?=(?:\d{3})+(?!\d))/g, '$1,');
}
function uncomma(str) {
str = String(str);
return str.replace(/[^\d]+/g, '');
}
$(".qty").on('input', function () {
var self = $(this);
var unitVal = self.parent().next().children('.unit').val();
self.parent().next().next().children('input').val(unitVal * self.val());
fnAlltotal();
});
$(".unit").on('input', function () {
var self = $(this);
var qtyVal = self.parent().prev().children('.qty').val();
self.parent().next().children('input').val(qtyVal * self.val());
fnAlltotal();
});
function fnAlltotal(){
var total=0
var total_ea=0
var total_percent=0
var total_price=0
var total_sale=0
$(".amount").each(function(){
total += parseFloat($(this).val()||0);
});
$(".total_price").val(comma(total));
$(".qty").each(function(){
total_ea += parseFloat($(this).val()||0);
});
$(".total_ea").val(comma(total_ea));
if (total_ea >= <?php echo $ev['ev_mini_ea'] ?> && total_ea < <?php echo $ev['ev_first_ea'] ?>) {
total_percent += <?php echo $ev['ev_first_percent'] ?>;
} else if (total_ea > <?php echo $ev['ev_first_ea'] ?> && total_ea < <?php echo $ev['ev_second_ea'] ?>) {
total_percent += <?php echo $ev['ev_second_percent'] ?>;
} else if (total_ea > <?php echo $ev['ev_second_ea'] ?>) {
total_percent += <?php echo $ev['ev_third_percent'] ?>;
} else {
total_percent += <?php echo $ev['ev_first_percent'] ?>;
}
$(".total_percent").val(total_percent);
//total_price += $(".result").val(total)-($(".result").val(total)*($(".total_percent").val(total_percent)/100));
total_price += total-(total*(total_percent/100));
$(".result").val(total_price);
total_sale += total*(total_percent/100);
$(".total_sale").val(total_sale);
}
</script>
위와 같이 jquery로 수식계산을 하는데 중요한건 세자리마다 콤마를 넣길원하는데
총 상품금액은 $(".total_price").val(comma(total)); 와 같이 잘나옵니다. 그런데 소계와 상품가격도 콤마가 들어가야하는데 self.parent().next().next().children('input').val(unitVal * self.val()); 에서 self.parent().next().next().children('input').val(comma(unitVal * self.val())); 이런식으로 바꿔주면 소계에서 콤마가 잘나오지만 계산시 콤마가 들어가 합계에서 콤마 다음은 잘려서 나옵니다. uncomma를 계산 시 쓰면 되는것 같은데 아무리 해봐도 원하는 답이 안나오네요 ㅠ.ㅠ 아시는 분 있으시면 답변 부탁드리겠습니다. 감사합니다.
!-->답변 2
그누보드 스크립트 내장함수중에 number_format()이있습니다
이걸로 콤마 표현하시면되구요
var sub_total = unitVal * self.val()
self.parent().next().next().children('input').val(number_format(sub_total));
이런식으로 표현하면 되지않을까싶네요
fnAlltotal 안에서 계산할때 콤마를 붙어서 그런거처럼 보이는데요. 계산하기전에 콤마 떼고 계산 후에 콤마 붙이는 걸로 되지 않을까요?
$(".qty").on('input', function () {
var self = $(this);
var unitVal = self.parent().next().children('.unit').val();
var totVal = unitVal * self.val();
self.parent().next().next().children('input').val(totVal);
fnAlltotal();
self.parent().next().next().children('input').val(comma(totVal));
});
답변을 작성하시기 전에 로그인 해주세요.