계산 시 콤마 첨삭? 채택완료

상단 이미지와 같은 폼을 제작하고 있습니다.
$("#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)
1
2
1
2
it_sum1
it_sum2
it_sum_all
it_sum_vat
it_sum_total
$("#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('');
}
댓글을 작성하려면 로그인이 필요합니다.
기본적으로 스크립트상에서 ,가 포함된 숫자형을 쓰시려고 하시면 실제로는 문자로 인식되기때문에
숫자형으로 형변환후에 처리를 하셔야 할거구요
input안에 들어가는 문자형으로도 표현은 가능하지만 그전에 연산은 하신후에 넣으시길 추천합니다.
댓글을 작성하려면 로그인이 필요합니다.
$("#it_sum2").val();
대신에
<input value="1,000" data-val="1000" />
이런 방식도 한번 고려해 보세요.
$("#it_sum2").data('val');
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인