계산 시 콤마 첨삭?
본문
상단 이미지와 같은 폼을 제작하고 있습니다.
$("#qty").change(function() {
price = $("#qty option:selected").val();
console.log(price);
sum = parseInt(price);
if(price) {
$("#it_sum1").val(sum * 1000000);
cal_sum();
}
});
var sum2 = 0;
$("#qty2").change(function() {
price2 = $("#qty2 option:selected").val();
console.log(price2);
sum2 = parseInt(price2);
if(price2) {
$("#it_sum2").val(sum2 * 500000);
cal_sum();
}
});
function cal_sum() {
// $("#it_sum1").val().replace(/,/g,"");
var sum = parseInt($("#it_sum1").val()) + parseInt($("#it_sum2").val());
$('#it_sum_all').val(sum);
$('#it_sum_all').val($('#it_sum_all').val().replace(/\B(?=(\d{3})+(?!\d))/g, ","));
var vat = sum * 0.1;
$('#it_sum_vat').val(vat);
$('#it_sum_vat').val($('#it_sum_vat').val().replace(/\B(?=(\d{3})+(?!\d))/g, ","));
var total = sum + vat;
$('#it_sum_total').val(total);
$('#it_sum_total').val($('#it_sum_total').val().replace(/\B(?=(\d{3})+(?!\d))/g, ","));
};
현재 스크립트는이렇게 되어있는데
#it_sum1 인풋에 콤마를 찍고싶습니다. 콤마를 넣는 정규식을 적용하였는데
cal_sum에서 합산될때 계산이 이상하게 되버리네요....
어떻게 해야 좋을까요?
!-->답변 3
표현할때 comma 추가
https://github.com/gnuboard/gnuboard5/blob/master/js/common.js#L64
function number_format(data)
계산할때 comma 제거
https://github.com/gnuboard/gnuboard5/blob/master/js/common.js#L119
function no_comma(data)
<select id="qty">
<option value=""></option>
<option value="1">1</option>
<option value="2">2</option>
</select>
<select id="qty2">
<option value=""></option>
<option value="1">1</option>
<option value="2">2</option>
</select>
<ul>
<li><label>it_sum1 <input type="text" id="it_sum1" /></label></li>
<li><label>it_sum2 <input type="text" id="it_sum2" /></label></li>
<li><label>it_sum_all <input type="text" id="it_sum_all" /></label></li>
<li><label>it_sum_vat <input type="text" id="it_sum_vat" /></label></li>
<li><label>it_sum_total <input type="text" id="it_sum_total" /></label></li>
</ul>
<script>
$("#qty").change(function() {
price = $("#qty option:selected").val();
if (price == '') {
$("#it_sum1").val('');
cal_result_init();
return;
}
// console.log(price);
// sum = parseInt(price);
sum = Number(price);
if(price) {
// $("#it_sum1").val(sum * 1000000);
$("#it_sum1").val(number_format(sum * 1000000));
cal_sum();
}
});
var sum2 = 0;
$("#qty2").change(function() {
price2 = $("#qty2 option:selected").val();
if (price2 == '') {
$("#it_sum2").val('');
cal_result_init();
return;
}
// console.log(price2);
// sum2 = parseInt(price2);
sum2 = Number(price2);
if(price2) {
// $("#it_sum2").val(sum2 * 500000);
$("#it_sum2").val(number_format(sum2 * 500000));
cal_sum();
}
});
function cal_sum() {
// // $("#it_sum1").val().replace(/,/g,"");
// var sum = parseInt($("#it_sum1").val()) + parseInt($("#it_sum2").val());
// $('#it_sum_all').val(sum);
// $('#it_sum_all').val($('#it_sum_all').val().replace(/\B(?=(\d{3})+(?!\d))/g, ","));
// var vat = sum * 0.1;
// $('#it_sum_vat').val(vat);
// $('#it_sum_vat').val($('#it_sum_vat').val().replace(/\B(?=(\d{3})+(?!\d))/g, ","));
// var total = sum + vat;
// $('#it_sum_total').val(total);
// $('#it_sum_total').val($('#it_sum_total').val().replace(/\B(?=(\d{3})+(?!\d))/g, ","));
var sum = Number(no_comma($("#it_sum1").val())) + Number(no_comma($("#it_sum2").val()));
$('#it_sum_all').val(number_format(sum));
var vat = sum * 0.1;
$('#it_sum_vat').val(number_format(vat));
var total = sum + vat;
$('#it_sum_total').val(number_format(total));
};
function cal_result_init() {
$('#it_sum_all').val('');
$('#it_sum_vat').val('');
$('#it_sum_total').val('');
}
</script>
$("#it_sum2").val(); 대신에 <input value="1,000" data-val="1000" /> 이런 방식도 한번 고려해 보세요. $("#it_sum2").data('val');
기본적으로 스크립트상에서 ,가 포함된 숫자형을 쓰시려고 하시면 실제로는 문자로 인식되기때문에
숫자형으로 형변환후에 처리를 하셔야 할거구요
input안에 들어가는 문자형으로도 표현은 가능하지만 그전에 연산은 하신후에 넣으시길 추천합니다.
답변을 작성하시기 전에 로그인 해주세요.