2012. 1. 25. 10:35

텍스트박스 천단위 콤마 찍기(이벤트 응용)

천단위 콤마 + 수정시 다시 콤마 찍기 + 더블클릭시 0으로 초기화 + 붙여넣기시 숫자외 방지(클립보드 변경) + 공백일경우 0 삽입 + 입력가능 수 백만단위 제한.

<%--
/************************************************************/
/*      숫자만 입력해주는 스크립트     */
/************************************************************/
--%>
function getOnlyNumberKey() {

  if ((event.keyCode >=48 && event.keyCode <=57)   // 자판 0~9
   || (event.keyCode == 8)              // back space
 )
  {
   event.returnValue = true;
  } else {
   event.returnValue = false;
  }
}
<%--
/************************************************************/
/*      숫자가 0일경우 공백으로 리턴       */
/************************************************************/
--%>
function zeroNullChange(num) {
 var retNum;
 
  if(num==0){
   retNum = "";
  }else{
   retNum = num;
  }
 return retNum;
}
<%--
/************************************************************/
/*      천단위 콤마찍기         */
/************************************************************/
--%>
function num_format(n) {

   var pre_reg = /[^0-9]/gi;
   n = String(n);
   n = n.replace(pre_reg, '');
 
   var reg = /(^[+-]?\d+)(\d{3})/;   // 정규식
   n = String(n);                    // 숫자를 문자열로 변환
  
   while (reg.test(n))
     n = n.replace(reg, '$1' + ',' + '$2');
   return n;
}
<%--
/************************************************************/
/*      천단위 콤마제거         */
/************************************************************/
--%>
function del_Comma(n) {

   var pre_reg = /[^0-9]/gi;
   n = String(n);
   n = n.replace(pre_reg, '');
   return n;
}
<%--
/************************************************************/
/*      숫자외 문자 걸러내고 클립보드 데이터 변경     */
/************************************************************/
--%>
function notNumberFormatReplace(str){
 
 var reg = /[^0-9]/gi;
 var clipData = window.clipboardData.getData("Text");  //클립보드 데이터 가져오기

 clipData = String(clipData);

 if(window.event.ctrlKey && window.event.keyCode == 86) {
  clipData = clipData.replace(reg, '');
  window.clipboardData.setData('Text',clipData);
  
  return clipData;
 }else{
  return str;
 } 
}

사용법


<input type="text" name="terminal" maxlength="7" class="text" value="0"
         onkeypress="this.value=del_Comma(this.value);getOnlyNumberKey();if(this.value==0){this.value='';}"
             onKeyUp="if(this.value==''){this.value='0'}else{this.value=num_format(this.value);}"
             onkeydown="this.value=notNumberFormatReplace(this.value);"
             onblur="this.value=num_format(this.value); if(this.value=='') this.value='0';"
             onFocus="this.value=zeroNullChange(this.value);"
             ondblclick="if(this.value!=0){this.value='';}"
             style="text-align:right;ime-mode:disabled;width:100%;color:#0678F9;border:1px solid #C0C0C0;padding:0px 0;height:18px;line-height:18px;">