https://blog.naver.com/till-its-over/223086039970

블로그에

 

 

 

<script> // ▼ (1) 입력제한 : 숫자만 입력 [키보드 입력 이벤트 ] $(document).on('keyup' , ".trgetAmount" , function(event){ if(event.keyCode == 16 || event.keyCode == 35 || event.keyCode == 36 || event.keyCode == 46){ return false; } if (!(event.keyCode >=37 && event.keyCode<=40)) { var inputVal = $(this).val(); $(this).val(inputVal.replace(/[^0-9]/gi,'')); } }); // ▼ (2) 포맷변경 : 입력한 값을 반점 형태로 변경 [입력칸 이외 다른 곳을 클릭하는 경우] $(document).on('blur' , ".trgetAmount" , function(){ // (1) 공백이나 값이 0인경우 다시 0으로 초기화 if($(this).val().trim() == "" || $(this).val().trim() == "0"){ $(this).val("0"); } // (2) 좌측 0 을 제거한 후 천단위 콤마를 추가 후 값을 변경함 else { onlyN = $(this).val().replace(/(^0+)/, ""); // 좌측0제거 commaN = onlyN.replace(/\B(?=(\d{3})+(?!\d))/g, ','); // 천단위콤마추가 $(this).val(commaN); } }); </script>

 

자바스크립트 이벤트 생성해서 적용시켜서 천단위 콤마, 숫자만 입력 , 맨 앞에 0 불가

잘 사용하고 있는데요.

db로 보낼대는 천단위 콤마 쉼표를 제거해야하는데

여러 방법을 동원해도 

db로 넘어가면 예 : 3,000     쉼표 맨 왼쪽 3만 저장이 됩니다.

어떤식을 추가해야 할까요 ㅠ_ㅠ     

  • profile
    서버쪽에서 해당 처리를 해주는 방법이 가장 좋고 안전합니다.
    $str = "3,000";
    $num = preg_replace("/[^0-9]*/s", "", $str);

    질문글의 경우 사용자 브라우저에서 변환하는 방법을 말씀하시는것 같은데 form 을 submit 하기전에 숫자로 추출을 해주시면 됩니다.

    실제 적용한 URL을 모르니 onsubmit 처리를 어떻게 하셨는지 모르겠지만 아래 간단하게 아래 소스를 참고해주세요.

    var str = "3,000";
    var num = str.replace(/[^0-9]/g,'');
  • ?
    모듈 저장 되는 소스 고치기 힘들고 스킨에서 수정해야한다면
    input 을 두개 만드는 편법도 있죠

    실제 XE용 변수로 전달될 숫자값용 hidden input
    그리고 콤마가 찍히는 유저가 기재하는 출력용 text input
    출력용 text input 에 작성될때마다 script 를 통해 hidden input 에 콤마가 없는 숫자만 입력되게 하면 됩니다