스크립트 동일한거 여러개 추가 하고 싶습니다.
본문
<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>
답변을 작성하시기 전에 로그인 해주세요.