콤마찍기가 스크립트안에서 안되네요.

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!
콤마찍기가 스크립트안에서 안되네요.

QA

콤마찍기가 스크립트안에서 안되네요.

본문

숫자로 계산해서 문자로 콤마를 찍어야 되지않을 까해서 아래 소스를 적용해도 콤마가 안찍히네요.

여분필드 숫자에 <?php echo number_format($board['bo_5']); // ?>는 되는데요.

스크립 함수안에 

--> 

var value = $('#value').text();
var value2 = value.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
$('#total').text(value2);
<-- 이걸 넣어도 안되서요.

 

------> 적용 소스 시작 <-----

<script>
function calc( event )
{
  var result = 0;
  var desc_txt = [];
  var obj;
  // var form_obj = document[event.form.name];
  var form_obj = event.form;
  var form_length = form_obj['checkbox'].length;
  var desc = document.getElementById('desc');
  for ( var i=0; i<form_length; i++ )
  {
    obj = form_obj['checkbox'][i];
    if ( obj.checked == true ) {
      result += parseInt(obj.getAttribute('value'));
            // desc_txt.push(obj.parentNode.querySelector('p').innerHTML);
      desc_txt.push(obj.parentNode.querySelector('p').innerHTML + ' (' + obj.value + ')');

    }
  }
  desc.innerHTML = desc_txt.join(',');
  form_obj['result'].value=result;
}
</script>
        
<label for="wr_4">4번 금액 </label>
<form>
<ul>
<li>
<p>테스트상품1</p>
<input type="checkbox" name="checkbox" value="<?php echo $board['bo_4'] ?>" id="wr_4" onclick="calc( this );" /><?php echo number_format($board['bo_4']); // ?>
</li>
<li>
<p>테스트상품2</p>
<input type="checkbox" name="checkbox" value="<?php echo $board['bo_5'] ?>" id="wr_5" onclick="calc( this );" /><?php echo number_format($board['bo_5']); // ?>
</li>
</ul>
<div class="total">
  <div id="desc"></div>
<input type="text" name="result"  value="0" />
</div>
</form>

-----> 소스 종료 <-----


--------> 스크립트안에 "desc" 부분과 "value" 콤마찍는 것을 넣어도 안되는이유가 뭔지 모르겠습니다.

아래 예제) --> 아래 부분은 되는데요.  위에 클래스줘도 안되네요.

<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<span id="total">60000</span><span>원</span>
<script>
var total = $('#total').text();
var total2 = total.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
$('#total').text(total2);
</script>

 

아래  적용 테스트 링크 예제 --> 

https://wedgo1.cafe24.com/POTAL/bbs/write.php?bo_table=CELL2

 

 

 

 

이 질문에 댓글 쓰기 :

답변 4

<script>
var total = $('#total').text();
var total2 = total.toLocaleString();
$('#total').text(total2);
</script>

 

이걸로 해보세요

네. 답변감사합니다. 스크립 변경해도 안되네요.
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<span id="total">60000</span><span>원</span>
<script>
var total = $('#total').text();
var total2 = total.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
$('#total').text(total2);
</script>
요건 예제에서 숫자컴마가 잘되는 부분이라 이걸 적용해서 해보려고 한것 뿐이구요.
이게 문제가 아니고 아래에 보시면....

<script>
function calc( event )
{
  var result = 0;
  var desc_txt = [];
  var obj;
  // var form_obj = document[event.form.name];
  var form_obj = event.form;
  var form_length = form_obj['checkbox'].length;
  var desc = document.getElementById('desc');
  for ( var i=0; i<form_length; i++ )
  {
    obj = form_obj['checkbox'][i];
    if ( obj.checked == true ) {
      result += parseInt(obj.getAttribute('value'));
            // desc_txt.push(obj.parentNode.querySelector('p').innerHTML);
      desc_txt.push(obj.parentNode.querySelector('p').innerHTML + ' (' + obj.value + ')');

    }
  }
  desc.innerHTML = desc_txt.join(',');
  form_obj['result'].value=result;
}
</script>

여기서 나오는 합계 값(수자)에 컴마를 찍어야 되는데 안되서요.
계산은 잘되는데 결과 값의 숫자에 컴마가 안찍히네요.
구글링해도 거의 비슷한 스크립트만 있고 컴마찍는게 어렵네요.
계산은 숫자로 하고 보여지는경우는 문자로 하는게 맞지 않나요?
그래서 결과값(숫자->문자)에 임의로 컴마값을 줘도 안됩니당.

그냥 desc에 콤마 넣어서 문자열로 하시고, 계산하실때 숫자로 바꿔서 가져오는것은 어떠실까요?

저 calc 스크립트에서 굳이 문자열과 숫자열 따로 관리할 필요는 없어보이는데

조나단님 혹시 desc에 콤마 넣어서 문자열로 하고  계산할때 숫자로 바꿔서 가져오는 방법이 있나요? 제가 워낙 초보라 있는 스크립원리만 대약 알지 스크립을 짜는 실력이 안되서요. ㅠ


<span id="stotal">60000</span><span>원</span>
<script>
var total = $('#stotal').text().toString();
var total2 = total.replace(/\B(?=(\d{3})+(?!\d))/g, ",");
$('#stotal').text(total2);
</script>

id = total 이 겹쳐서 그랬었습니다.

이름을 바꾸시면 됩니다.

네. 답변주셔서 감사합니다.
알려주신데로 스크립 id = total 를->  id="stotal" 로바꿔서 아래 값을 줘도 안되네요.

<div class="stotal">
  <div id="desc"></div>
<input type="text" name="result" value="0" />
</div>
class를 줘도 안되서 스크립안쪽에서 바꿔야 될듯한데요.
값을 모르겠습니다.


<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script>
var desc = $('#desc').text().toString();
var desc2 = desc.replace(/\B(?=(\d{3})+(?!\d))/g, ",");
$('#desc').val(desc2);
</script>
<p> 합계 : <input type="text" name="result" id="desc" value="0" /></p>

input 박스에 넣으실때는 val을 이용하셔야 합니다.

답변 감사합니다. 조나단님께서 먼저 답을 주셔서 해결 했습니다. 위와 같은 방법으로 다를 부분에 적용을 해보겠습니다. 채택이 1개라 너무 하쉽네요. 3개정도 그누에서 해주셨으면 하는 바람도 있네요. 친절한 답변 감사드립니다.^^

class="stotal"으로 바꾸는게 아니라요.

가지고 오셔야 하는 텍스트가 있는 div에 id를 바꾸셔야 합니다.


<div class="stotal">
  <div id="desc"></div>
<input type="text" name="result" value="0" />
</div>

이 소스 기준이라면 id는 desc인것 입니다.

<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script>
var desc = $('#desc').text().toString();
var desc2 = desc.replace(/\B(?=(\d{3})+(?!\d))/g, ",");
$('#desc').text(desc2);
</script>

<p> 합계 : <input type="text" name="result" id="desc" value="0" /></p>
위 스크립에 desc 바꾸고 거져오는곳 아이디도 desc 이걸로 바꿔도 컴마가 안찍히네요.

답변을 작성하시기 전에 로그인 해주세요.
전체 30
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT