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

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

QA

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

본문


<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

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

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

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


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


    ~~ 위 생략 ~~
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>
 
답변을 작성하시기 전에 로그인 해주세요.
전체 125,920 | RSS
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT