채택완료

스크립트 동일한거 여러개 추가 하고 싶습니다.

2016-10-20 (목) 20:11:05 3,676
Copy
<script language='Javascript'> /// VAT 계산 하기 ////////// //////////////////////// 문자열 치환 ////////////////////// function replace(str,sstr,rstr) { // 문자열 치환 return String(str).replace(new RegExp(sstr,"ig"),rstr); } //////////////////////// 문자열 치환 ////////////////////// //////////// 실시간 콤마 ///////////////////// function tagin_net_comma(tagin_net_str) { var t_align = "right"; // 텍스트 필드 정렬 var t_num = tagin_net_str.value.substring(0,1); // 첫글자 확인 변수 var num = /^[/,/,0,1,2,3,4,5,6,7,8,9,/]/; // 숫자와 , 만 가능 var tagin_netValue = ""; var tagin_netValue2 = ""; if (!num.test(tagin_net_str.value)) { alert('숫자만 입력하십시오.nn특수문자와 한글/영문은 사용할수 없습니다.'); tagin_net_str.value=""; tagin_net_str.focus(); return false; } if ((t_num < "0" || "9" < t_num)){ alert("숫자만 입력하십시오."); tagin_net_str.value=""; tagin_net_str.focus(); return false; } for(i=0; i<tagin_net_str.value.length; i++) { if(tagin_net_str.value.charAt(tagin_net_str.value.length - i -1) != ",") { tagin_netValue2 = tagin_net_str.value.charAt(tagin_net_str.value.length - i -1) + tagin_netValue2; } } for(i=0; i<tagin_netValue2.length; i++) { if(i > 0 && (i%3)==0) { tagin_netValue = tagin_netValue2.charAt(tagin_netValue2.length - i -1) + "," + tagin_netValue; } else { tagin_netValue = tagin_netValue2.charAt(tagin_netValue2.length - i -1) + tagin_netValue; } } tagin_net_str.value = tagin_netValue; tagin_net_str.style.textAlign = t_align; } //////////// 실시간 콤마 ///////////////////// ///////////////// 콤마 나누는 부분 //////////////// function commaSplit(srcNumber) { var txtNumber = '' + srcNumber; var rxSplit = new RegExp('([0-9])([0-9][0-9][0-9][,.])'); var arrNumber = txtNumber.split('.'); arrNumber[0] += '.'; do { arrNumber[0] = arrNumber[0].replace(rxSplit, '$1,$2'); } while (rxSplit.test(arrNumber[0])); if (arrNumber.length > 1) { return arrNumber.join(''); } else { return arrNumber[0].split('.')[0]; } } ///////////////// 콤마 나누는 부분 //////////////// function tagin_net_vat(){ var f = document.tagin_netform; var tagin_net_vat_rate = (f.tagin_net_rate.value/100); var tagin_net_money = replace(f.tagin_net_money.value,',',''); var tagin_net_vat_money= (tagin_net_money * tagin_net_vat_rate); var tagin_net_vat_money_plus = (tagin_net_vat_money - (tagin_net_money * -1)); var tagin_net_vat_remind = tagin_net_money-tagin_net_vat_money; f.tagin_net_vat_remind.value = commaSplit(parseInt(tagin_net_vat_remind)); f.tagin_net_vat_money.value = commaSplit(parseInt(tagin_net_vat_money)); f.tagin_net_vat_money_plus.value = commaSplit(parseInt(tagin_net_vat_money_plus)); }</script> <form name="tagin_netform"> <table border="0" bgcolor="#CCCCCC" cellpadding="5" cellspacing="1" align="center"> <tr align="center" bgcolor="white"><td colspan="2">다나와</td></tr> <tr align="center" bgcolor="white"> <td>금액</td><td align="left"><input type="text" size="15" name="tagin_net_money" value=""onKeyUp="tagin_net_comma(this);tagin_net_vat()"> 원</td> </tr> <tr align="center" bgcolor="white"> <td>요율</td><td align="left"><input type="text" size="15" name="tagin_net_rate" value="10"  onFocus="this.select()" onKeyUp="tagin_net_vat()" style="text-align:right;"> %</td> </tr> <tr align="center" bgcolor="white"> <td>요율값</td><td align="left"><input type="text" size="15" name="tagin_net_vat_money" value="" onFocus="this.blur()" readonly style="text-align:right;"> 원</td> </tr><tr align="center" bgcolor="white" > <td>결과값</td ><td align="left" ><input type="text" size="15" name="tagin_net_vat_remind" value="" onFocus="this.blur()" readonly style="text-align:right;" > 원</td > </tr > </table> </form>

73~89줄의 계산기를 한페이지에 여러개를 추가하고 각각 독립적으로 작동하게 할려고 합니다.

도움 부탁드려요~

|

답변 1개 / 댓글 1개

채택된 답변
+20 포인트
2016-10-20 (목) 22:02:56

tagin_net_vat() 함수의 f 변수를 form ID로 받으면 됩니다.

그리고 적용하려는 다수의 form 객체에 id="form1", id="form2", ... 이런식으로 id 를 할당하고

tagin_net_vat() 함수를 사용할 때 tagin_net_vat('form1'), tagin_net_vat('form2') 이런식으로 하면 됩니다.

다음과 같이 수정하고 테스트해 보세요.

Copy
~~ 위 생략 ~~function tagin_net_vat(id){    //var f = document.tagin_netform;    var f = document.getElementById(id);    ~~ 생략 ~~}</script> <form name="tagin_netform1" id="form1">    ~~ 중간 생략 ~~    <td>금액</td>    <td align="left"><input type="text" size="15" name="tagin_net_money" value=""onKeyUp="tagin_net_comma(this);tagin_net_vat('form1')"> 원</td>    ~~ 중간 생략 ~~    <td>요율</td>    <td align="left"><input type="text" size="15" name="tagin_net_rate" value="10"  onFocus="this.select()" onKeyUp="tagin_net_vat('form1')" style="text-align:right;"> %</td>   ~~ 중간 생략 ~~</form> <form name="tagin_netform2" id="form2">    ~~ 중간 생략 ~~    <td>금액</td>    <td align="left"><input type="text" size="15" name="tagin_net_money" value=""onKeyUp="tagin_net_comma(this);tagin_net_vat('form2')"> 원</td>    ~~ 중간 생략 ~~    <td>요율</td>    <td align="left"><input type="text" size="15" name="tagin_net_rate" value="10"  onFocus="this.select()" onKeyUp="tagin_net_vat('form2')" style="text-align:right;"> %</td>   ~~ 중간 생략 ~~</form>
 

답변에 대한 댓글 1개

정말 감사해요 ^^

답변을 작성하려면 로그인이 필요합니다.