실시간 금액 한글처리

Posted 2008. 4. 15. 16:04 by maxmini MAXMINI

/////////////////////////////////////////////////
// 실시간 금액 한글처리
// - 입력된 금액을 입력시점에 한글로 변환하여 특정필드에 뿌려준다.
// - 천단위 숫자표시는 하지 않는다.
// - @numField : 숫자입력필드
// - @hanField : 한글출력필드
// - @event : onKeyUp 이벤트 객체
/////////////////////////////////////////////////
var hanNumber = new Array ('영','일','이','삼','사','오','육','칠','팔','구' );
var fourFour = new Array ('일', '만', '억', '조' );
var fourDigit = new Array ('일','십', '백', '천' );
function numTohan(numField, hanField, event) {
    // 입력된 num 값
    num = numField.value;

    // 입력된 값이 없을 경우 처리
    if(num == "")
    {  
        hanField.value = "";
        return;
    }
   
    delimiter = ' ';
   
    bPos = 0; // 만, 억, 조
    sPos = 0; // 십, 백, 천
    digit = 0;
   
    szDigit = '';
    is_start = false;
    appendFF = false;
    len = num.length;
    szHan = '';
   
    /////////////////////////////////////////////
    // 금액 한글 처리 부분
    /////////////////////////////////////////////
    for (i=len-1;i>=0;i--) {
            szDigit=num.substring(i,i+1);
            digit=parseInt(szDigit);
           
            if (digit!=0) {
                    if (bPos!=0 && sPos==0) {
                            if (is_start==true) szHan += delimiter;
                            szHan += fourFour[bPos]; // 만, 억
                            appendFF=false;
                    }
                    if (bPos!=0 && appendFF==true) {
                            if (is_start==true) szHan += delimiter;
                            szHan += fourFour[bPos]; // 만, 억
                            appendFF=false;
                    }
                    if (sPos!=0) szHan += fourDigit[sPos]; // 십, 백, 천
                    if (sPos==0 || hanNumber[digit] != "일")
                        szHan += hanNumber[digit]; // 일, 이, 삼
                    is_start=true;
            }
            else if (sPos==0 && bPos!=0) appendFF=true;
            sPos++;
            if (sPos%4==0) {
                    sPos=0;
                    bPos++;
                    if (bPos>=4) return "(범위초과)";
            }
    }
    if (is_start==false) szHan += "영";
   
    rslt = '';
    for(i = szHan.length - 1; i >= 0; i--) {
            rslt += szHan.substring(i, i + 1);
    }
   
    // 한글필드에 출력
    hanField.value = rslt + " 원";
}

Tag :

Write your message and submit
« PREV : 1 : ··· : 43 : 44 : 45 : 46 : 47 : 48 : 49 : 50 : 51 : ··· : 58 : NEXT »