숫자에 컴마(,) 쓰기
로빈아빠
본문
숫자에 컴마(,) 쓰기
여러가지 다른 함수도 포함 되어 있으니 활용하면 좋을 것 같습니다.
여러가지 다른 함수도 포함 되어 있으니 활용하면 좋을 것 같습니다.
<SCRIPT lang=JScript> function SetNum(obj){ val=obj.value; re=/[^0-9]/gi; obj.value=val.replace(re,""); } function onlyNum2(obj) { if (event.keyCode >= 48 && event.keyCode <= 57) { //숫자키만 입력 return true; } else { Event.returnValue = false; } } function onlyNum(el){ el.value = el.value.replace(/\D/g,''); } function removeTag(s) { switch ( typeof s ) { case "string": return s.replace(/<[^<>]+>/g, ""); default : return s; } } function removeFlag(s) { switch ( typeof s ) { case "string": return s.replace(/[↑▲↓▼]/g, ""); case "number": return s; default : return ""; } } function removeComma(s) { return s.replace(/[, ]/g, "") } function tagToNumber(tag) { try{ return Number(removeTag(tag).replace(/[, ]/g, "")); }catch(e){ return tag; } } function nbformat(numstr) { var re0 = /(\d+)(\d{3})($|\..*)/; if (re0.test(numstr)) return numstr.replace(re0,function(str,p1,p2,p3) { return nbformat(p1) + "," + p2 + p3; }); else return numstr; } function comma(s) { var numstr; switch ( typeof s ) { case "string": numstr = removeComma(s); break; case "number" : numstr = String(s); break; default: return "0"; } return nbformat( numstr, 3); } function addZero(number) { var numStr = number+""; return ( number < 10 ) ? ("0" + numStr): numStr; } function getNewDate( odata, dtype, doppset ){ var nDate; nDate = (odata != "") ? new Date(odata.substr(0,4), odata.substr(4,2)-1,odata.substr(6,2)) : new Date(); if( dtype == 'Y' ) nDate = new Date( tagToNumber(odata.substr(0,4))+doppset, odata.substr(4,2)-1,odata.substr(6,2)) ; else if( dtype == 'M' ) nDate = new Date(odata.substr(0,4), tagToNumber(odata.substr(4,2))-1+doppset, odata.substr(6,2)) ; else nDate = new Date(odata.substr(0,4), odata.substr(4,2)-1, tagToNumber(odata.substr(6,2))+doppset) ; var cdate = nDate.getYear() + addZero(nDate.getMonth() + 1) + addZero(nDate.getDate()) return cdate; } function getMonth( edate, prevnext ) { var endDate = (edate != "") ? new Date(edate.substr(0,4), edate.substr(4,2)-1,edate.substr(6,2)) : new Date(); if (isNaN(edate)) { endDate=new Date(); } endDate.setMonth(endDate.getMonth() + prevnext ); var cMonth = endDate.getMonth() + 1; var cDay = endDate.getDate() - 1; return endDate.getYear() + addZero(cMonth) + addZero( cDay); } function getDate(){ var date = new Date(); return formatDate2(date, 'YMd'); } function formatDate2(d, format) { var r = ""; for ( var n = 0, cnt = format.length; n < cnt; n++ ) { var c = format.charAt(n); switch ( c ) { case "Y": r += String(d.getFullYear()).npad(4); break; case "M": r += String(d.getMonth()+1).npad(2); break; case "d": r += String(d.getDate() ).npad(2); break; case "H": r += String(d.getHours() ).npad(2); break; case "m": r += String(d.getMinutes()).npad(2); break; case "s": r += String(d.getSeconds()).npad(2); break; default : r += c; } } return r; } function formatDate(d, format) { var r = ""; var c; for ( var n = 0, cnt = format.length, i=0; n < cnt; n++ ) { c = format.charAt(n); switch ( c ) { case "Y": case "y": case "M": case "D": case "d": case "H": case "h": case "m": case "S": case "s": r += d.charAt(i); i++; break; case "r": i++; break; default : r += c; } } return r; } function dateFormat(dateStr) { if (dateStr) return dateStr.length >= 8 ? (dateStr.substr(0, 4)+"/"+dateStr.substr(4, 2)+"/"+dateStr.substr(6, 2)): (dateStr.substr(0, 2)+"/"+dateStr.substr(2,2)); else return ""; } function timeFormat(timeStr) { try{ if ( !isNaN(timeStr) ) return timeStr.length >= 6 ? (timeStr.substr(0, 2)+":"+timeStr.substr(2, 2)+":"+timeStr.substr(4, 2)):(timeStr.substr(0, 2)+":"+timeStr.substr(2, 2)); else{ if( timeStr.indexOf('J') == -1 ) return (timeStr.substr(0, 1)+":"+timeStr.substr(1, 1)+":"+timeStr.substr(2, 1)); else return timeStr.substr(0, 2)+":"+timeStr.substr(2, 2); } }catch(e){ return ""; } } function unFormat( dateStr ){ return dateStr.replace(/[/ :]/g, ""); } function window.onload() { //initTable([table1]); if('800000' != ''){ document.f1.principal_money.value = comma(800000); } } var g_principal_money; var g_cma_interest_rates; var g_cma_interest; var g_difference_money; function calculateMoney(){ clearTable(); g_cma_interest_rates = "4.8"; with(document.f1){ g_principal_money = tagToNumber(principal_money.value); deposit_interest = Math.round(g_principal_money * deposit_interest_rates.value * investment_period.value /1200); //alert("deposit_interest:" + deposit_interest); cma_interest = Math.round(g_principal_money * g_cma_interest_rates * investment_period.value /1200); table1.setHTML( 'cma원금' , principal_money.value + '원'); table1.setHTML( '은행원금' ,principal_money.value + '원'); table1.setHTML( 'cma이자' , comma(cma_interest) + '원'); table1.setHTML( '은행이자' ,comma(deposit_interest) + '원'); table1.setHTML( 'cma합계' , comma(g_principal_money + cma_interest) + '원'); table1.setHTML( '은행합계' ,comma(g_principal_money + deposit_interest) + '원'); g_difference_money = comma(cma_interest - deposit_interest); } document.f2.difference_money.value = g_difference_money; } function my_submit(){ with(document.f1){ if(principal_money.value == '' || principal_money.value <= 0){ alert("예치금액을 입력해 주세요!"); principal_money.focus(); return; } if(investment_period.value == '' || investment_period.value <= 0){ alert("투자기간을 입력해 주세요!"); investment_period.focus(); return; } principal_money.value = tagToNumber(principal_money.value); } document.f1.submit(); } </SCRIPT> <FORM name=f1 action=/fnc/mall/fund/cma_simulation.jsp> <INPUT onkeyup=this.value=comma(this.value); style="WIDTH: 100px" name=principal_money>원 <INPUT class=txt_8c style="WIDTH: 50px" maxLength=3 value=1 name=investment_period>일 <input type=text name=test onkeyup='SetNum(this)' onblur='SetNum(this)'> <IMG style="CURSOR: hand" onclick=JavaScript:my_submit(); src="btn.gif" align=absMiddle> </FORM>
<script language=javascript> function fn_number_format(Cost) { Cost = parseFloat(Cost); // Cost값이 0보다작으면(음수이면) Cost를 양수로변경하고 minus값도 변경 if (Cost < 0) { Cost *= -1; var minus = true; } else var minus = false; // Cost값에서 소숫점위와 아래를 분리하여 dotU/dotD변수에저장 // Cost가 숫자이기 때문에 문자로 변환하기 위해 (Cost + "") 에서 ""을 붙여줌 // split함수사용예 // AF = abcdefg.split("c") // AF[0] =>ab // AF[1] =>defg var dotPos = (Cost + "").split ("."); var dotU = dotPos [0]; var dotD = dotPos [1]; // dotU(소수점위)를 3으로나누어 그 나머지를 CommaFlag에저장 // 돈에 콤마를 표시할때 3자리 단위로 표시하기때문에... var CommaFlag = dotU.length % 3; // 나머지가 있을경우 (예: 12345 또는 12345678 ...) if (CommaFlag) { // out에 dotU앞자리를 CommaFlag길이만큼 대입 var out = dotU.substring (0, CommaFlag); // dotU의 길이가 3자리 초과이면 out문자끝에 콤마를 추가 if (dotU.length > 3) out += ","; } // 나머지가 없을경우(예: 123 또는 123456 ...) else var out = ""; // dotU문자에서 CommaFlag만큼 이동한후 세글자 단위로 콤마를 찍음 for (var i = CommaFlag; i < dotU.length; i += 3) { out += dotU.substring (i, i + 3); if (i < dotU.length - 3) out += ","; } // 음수일경우 out 변수값앞에 "-"를 추가 if (minus) out = "-" + out; // 소숫점이하값이 있으면 out변수값에 소숫점을 추가하여 리턴 if (dotD) return out + "." + dotD; else return out; } function fn_check_number() { var str = frmAGS_pay.Amt.value; str = str.replace(/[^0-9]/g, ""); if ( str == "" ) { str = 0; } frmAGS_pay.Amt.value = fn_number_format(str); } </script> <FORM name=frmAGS_pay action=/fnc/mall/fund/cma_simulation.jsp> <input name="Amt" type="text" class="input" style="width:130px;height:18px" onchange="javascript:fn_check_number()" onblur="javascript:fn_check_number()" onkeyup="javascript:fn_check_number()" /> 원 </FORM>
관련링크
댓글목록
등록된 댓글이 없습니다.