묻고답하기
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
자동계산스크립트
2004.11.16 16:26
text박스에 onkeypress이벤트와 onkeyup이벤트에 스크립트 함수를 걸었습니다.
onkeypress -> 숫자를 누르기 전 숫자를 다른 text박스에 저장
onkeyup -> 변경된 숫자를 받아서 onkeypress 에서 저장한 수와의 차이를 전체합계 text박스에 더합니다.
이렇게해서 항상 전체합계가 계산되도록 하려고하는데
문제는 text박스에 처음 수를 쓸때는 잘 되지만 커서가 다른곳으로 이동할때도 onkeyup 이벤트가 일어나더군요
그래서 계산이 불필요하게 한번 더 일어나고 결과적으로 전체합계가 달라지게 되는 현상이
onkeyup 이 이벤트를 숫자키만 눌렀을때 일어나게 할 수 있나요?
아니면 커서가 옮겨질 때만이라도 안일어나게 하는 방법이나 다른 이벤트가 있으면 부탁드립니다.
-----------------------------소스가 좀 복잡해서..ㅡ.ㅜ-----------------------------------
<SCRIPT LANGUAGE="JavaScript">
<!--
function calc_ready(obj,i,j,type){
form1.temp_value.value= obj.value;
form1.temp_i.value= i;
form1.temp_j.value= j;
form1.temp_type.value= type;
if(type == 'p'){
<?
for($ii=0;$ii <= 10 ;$ii++){
if ($ii<>0) echo"tt }else if(i==$ii){ n";
else echo"tt if(i==$ii){ n";
for($jj=0;$jj <= 10 ;$jj++){
if ($jj<>0) echo"ttt }else if(j==$jj){ n";
else echo"ttt if(j==$jj){ n";
echo"tttt form1.temp_sum1.value= form1.W_$ii.value n";
echo"tttt form1.temp_sum2.value= form1.WP_$jj.value n";
echo"tttt form1.temp_sum3.value= form1.TSUM_$jj.value n";
}
echo "ttt } n";
}
echo "tt } n";
?>
}else if(type == 'ib1'){
<?
for($ii=0;$ii <= 10 ;$ii++){
if ($ii<>0) echo"tt }else if(i==$ii){ n";
else echo"tt if(i==$ii){ n";
for($jj=0;$jj <= 10 ;$jj++){
if ($jj<>0) echo"ttt }else if(j==$jj){ n";
else echo"ttt if(j==$jj){ n";
echo"tttt form1.temp_sum1.value= form1.W_etc1_$ii.value n";
echo"tttt form1.temp_sum2.value= form1.WP_etc1_$jj.value n";
echo"tttt form1.temp_sum3.value= form1.TSUM_$jj.value n";
}
echo "ttt } n";
}
echo "tt } n";
?>
}else if(type == 'ib2'){
<?
for($ii=0;$ii <= 10 ;$ii++){
if ($ii<>0) echo"tt }else if(i==$ii){ n";
else echo"tt if(i==$ii){ n";
for($jj=0;$jj <= 10 ;$jj++){
if ($jj<>0) echo"ttt }else if(j==$jj){ n";
else echo"ttt if(j==$jj){ n";
echo"tttt form1.temp_sum1.value= form1.W_etc2_$ii.value n";
echo"tttt form1.temp_sum2.value= form1.WP_etc2_$jj.value n";
echo"tttt form1.temp_sum3.value= form1.TSUM_$jj.value n";
}
echo "ttt } n";
}
echo "tt } n";
?>
}
return true;
}
function calc(obj,i,j,type){
form1.temp.value= 1 * obj.value - 1 * form1.temp_value.value;
if(type == 'p'+ '+ '){
<?
for($ii=0;$ii <= 10 ;$ii++){
if ($ii<>0) echo"tt }else if(i==$ii){ n";
else echo"tt if(i==$ii){ n";
for($jj=0;$jj <= 10 ;$jj++){
if ($jj<>0) echo"ttt }else if(j==$jj){ n";
else echo"ttt if(j==$jj){ n";
echo"tttt form1.W_$ii.value= 1 * form1.temp_sum1.value + 1 * form1.temp.value; n";
echo"tttt form1.WP_$jj.value= 1 * form1.temp_sum2.value +1 * form1.temp.value; n";
echo"tttt form1.TSUM_$jj.value= 1 * form1.temp_sum3.value + 1 * form1.temp.value; n";
echo"tttt form1.temp_sum1.value= 1 * form1.temp_sum1.value + 1 * form1.temp.value; n";
echo"tttt form1.temp_sum2.value= 1 * form1.temp_sum2.value +1 * form1.temp.value; n";
echo"tttt form1.temp_sum3.value= 1 * form1.temp_sum3.value + 1 * form1.temp.value; n";
echo "form1.temp_value.value= '0'; n";
echo "form1.temp.value= '0'; n";
}
echo "ttt } n";
}
echo "tt } n";
?>
}else if(type == 'ib1'){
<?
for($ii=0;$ii <= 10 ;$ii++){
if ($ii<>0) echo"tt }else if(i==$ii){ n";
else echo"tt if(i==$ii){ n";
for($jj=0;$jj <= 10 ;$jj++){
if ($jj<>0) echo"ttt }else if(j==$jj){ n";
else echo"ttt if(j==$jj){ n";
echo"tttt form1.W_etc1_$ii.value= 1 * form1.temp_sum1.value + 1 * form1.temp.value; n";
echo"tttt form1.WP_etc1_$jj.value= 1 * form1.temp_sum2.value + 1 * form1.temp.value; n";
echo"tttt form1.TSUM_$jj.value= 1 * form1.temp_sum3.value + 1 * form1.temp.value; n";
echo"tttt form1.temp_sum1.value= 1 * form1.temp_sum1.value + 1 * form1.temp.value; n";
echo"tttt form1.temp_sum2.value= 1 * form1.temp_sum2.value + 1 * form1.temp.value; n";
echo"tttt form1.temp_sum3.value= 1 * form1.temp_sum3.value + 1 * form1.temp.value; n";
echo "form1.temp_value.value= '0'; n";
echo "form1.temp.value= '0'; n";
}
echo "ttt } n";
}
echo "tt } n";
?>
}else if(type == 'ib2'){
<?
for($ii=0;$ii <= 10 ;$ii++){
if ($ii<>0) echo"tt }else if(i==$ii){ n";
else echo"tt if(i==$ii){ n";
for($jj=0;$jj <= 10 ;$jj++){
if ($jj<>0) echo"ttt }else if(j==$jj){ n";
else echo"ttt if(j==$jj){ n";
echo"tttt form1.W_etc2_$ii.value= 1 * form1.temp_sum1.value + 1 * form1.temp.value; n";
echo"tttt form1.WP_etc2_$jj.value= 1 * form1.temp_sum2.value + $jj * form1.temp.value; n";
echo"tttt form1.TSUM_$jj.value= 1 * form1.temp_sum3.value + $jj * form1.temp.value; n";
echo"tttt form1.temp_sum1.value= 1 * form1.temp_sum1.value + 1 * form1.temp.value; n";
echo"tttt form1.temp_sum2.value= 1 * form1.temp_sum2.value + $jj * form1.temp.value; n";
echo"tttt form1.temp_sum3.value= 1 * form1.temp_sum3.value + $jj * form1.temp.value; n";
echo "form1.temp_value.value= '0'; n";
echo "form1.temp.value= '0'; n";
}
echo "ttt } n";
}
echo "tt } n";
?>
}
return true;
}
//-->
</SCRIPT>
...
...
..
<input type='text' name='F_".$j."[]' size='1' value='' class='lds_class' onkeypress=calc_ready(this,".$i.",".$j.",'p') onkeyup=calc(this,".$i.",".$j.",'p')>
: 이런 text 박스가 수십개 있습니다.
합계 : <input type='text' name='W_".$i."' size='1' value='".$workrec_total_time[$i]."' class='lds_class'>
<input type='text' name='WP_".$j."' size='1' value='".$workrec_part1_time[$j]."' class='lds_class'>...............
onkeypress -> 숫자를 누르기 전 숫자를 다른 text박스에 저장
onkeyup -> 변경된 숫자를 받아서 onkeypress 에서 저장한 수와의 차이를 전체합계 text박스에 더합니다.
이렇게해서 항상 전체합계가 계산되도록 하려고하는데
문제는 text박스에 처음 수를 쓸때는 잘 되지만 커서가 다른곳으로 이동할때도 onkeyup 이벤트가 일어나더군요
그래서 계산이 불필요하게 한번 더 일어나고 결과적으로 전체합계가 달라지게 되는 현상이
onkeyup 이 이벤트를 숫자키만 눌렀을때 일어나게 할 수 있나요?
아니면 커서가 옮겨질 때만이라도 안일어나게 하는 방법이나 다른 이벤트가 있으면 부탁드립니다.
-----------------------------소스가 좀 복잡해서..ㅡ.ㅜ-----------------------------------
<SCRIPT LANGUAGE="JavaScript">
<!--
function calc_ready(obj,i,j,type){
form1.temp_value.value= obj.value;
form1.temp_i.value= i;
form1.temp_j.value= j;
form1.temp_type.value= type;
if(type == 'p'){
<?
for($ii=0;$ii <= 10 ;$ii++){
if ($ii<>0) echo"tt }else if(i==$ii){ n";
else echo"tt if(i==$ii){ n";
for($jj=0;$jj <= 10 ;$jj++){
if ($jj<>0) echo"ttt }else if(j==$jj){ n";
else echo"ttt if(j==$jj){ n";
echo"tttt form1.temp_sum1.value= form1.W_$ii.value n";
echo"tttt form1.temp_sum2.value= form1.WP_$jj.value n";
echo"tttt form1.temp_sum3.value= form1.TSUM_$jj.value n";
}
echo "ttt } n";
}
echo "tt } n";
?>
}else if(type == 'ib1'){
<?
for($ii=0;$ii <= 10 ;$ii++){
if ($ii<>0) echo"tt }else if(i==$ii){ n";
else echo"tt if(i==$ii){ n";
for($jj=0;$jj <= 10 ;$jj++){
if ($jj<>0) echo"ttt }else if(j==$jj){ n";
else echo"ttt if(j==$jj){ n";
echo"tttt form1.temp_sum1.value= form1.W_etc1_$ii.value n";
echo"tttt form1.temp_sum2.value= form1.WP_etc1_$jj.value n";
echo"tttt form1.temp_sum3.value= form1.TSUM_$jj.value n";
}
echo "ttt } n";
}
echo "tt } n";
?>
}else if(type == 'ib2'){
<?
for($ii=0;$ii <= 10 ;$ii++){
if ($ii<>0) echo"tt }else if(i==$ii){ n";
else echo"tt if(i==$ii){ n";
for($jj=0;$jj <= 10 ;$jj++){
if ($jj<>0) echo"ttt }else if(j==$jj){ n";
else echo"ttt if(j==$jj){ n";
echo"tttt form1.temp_sum1.value= form1.W_etc2_$ii.value n";
echo"tttt form1.temp_sum2.value= form1.WP_etc2_$jj.value n";
echo"tttt form1.temp_sum3.value= form1.TSUM_$jj.value n";
}
echo "ttt } n";
}
echo "tt } n";
?>
}
return true;
}
function calc(obj,i,j,type){
form1.temp.value= 1 * obj.value - 1 * form1.temp_value.value;
if(type == 'p'+ '+ '){
<?
for($ii=0;$ii <= 10 ;$ii++){
if ($ii<>0) echo"tt }else if(i==$ii){ n";
else echo"tt if(i==$ii){ n";
for($jj=0;$jj <= 10 ;$jj++){
if ($jj<>0) echo"ttt }else if(j==$jj){ n";
else echo"ttt if(j==$jj){ n";
echo"tttt form1.W_$ii.value= 1 * form1.temp_sum1.value + 1 * form1.temp.value; n";
echo"tttt form1.WP_$jj.value= 1 * form1.temp_sum2.value +1 * form1.temp.value; n";
echo"tttt form1.TSUM_$jj.value= 1 * form1.temp_sum3.value + 1 * form1.temp.value; n";
echo"tttt form1.temp_sum1.value= 1 * form1.temp_sum1.value + 1 * form1.temp.value; n";
echo"tttt form1.temp_sum2.value= 1 * form1.temp_sum2.value +1 * form1.temp.value; n";
echo"tttt form1.temp_sum3.value= 1 * form1.temp_sum3.value + 1 * form1.temp.value; n";
echo "form1.temp_value.value= '0'; n";
echo "form1.temp.value= '0'; n";
}
echo "ttt } n";
}
echo "tt } n";
?>
}else if(type == 'ib1'){
<?
for($ii=0;$ii <= 10 ;$ii++){
if ($ii<>0) echo"tt }else if(i==$ii){ n";
else echo"tt if(i==$ii){ n";
for($jj=0;$jj <= 10 ;$jj++){
if ($jj<>0) echo"ttt }else if(j==$jj){ n";
else echo"ttt if(j==$jj){ n";
echo"tttt form1.W_etc1_$ii.value= 1 * form1.temp_sum1.value + 1 * form1.temp.value; n";
echo"tttt form1.WP_etc1_$jj.value= 1 * form1.temp_sum2.value + 1 * form1.temp.value; n";
echo"tttt form1.TSUM_$jj.value= 1 * form1.temp_sum3.value + 1 * form1.temp.value; n";
echo"tttt form1.temp_sum1.value= 1 * form1.temp_sum1.value + 1 * form1.temp.value; n";
echo"tttt form1.temp_sum2.value= 1 * form1.temp_sum2.value + 1 * form1.temp.value; n";
echo"tttt form1.temp_sum3.value= 1 * form1.temp_sum3.value + 1 * form1.temp.value; n";
echo "form1.temp_value.value= '0'; n";
echo "form1.temp.value= '0'; n";
}
echo "ttt } n";
}
echo "tt } n";
?>
}else if(type == 'ib2'){
<?
for($ii=0;$ii <= 10 ;$ii++){
if ($ii<>0) echo"tt }else if(i==$ii){ n";
else echo"tt if(i==$ii){ n";
for($jj=0;$jj <= 10 ;$jj++){
if ($jj<>0) echo"ttt }else if(j==$jj){ n";
else echo"ttt if(j==$jj){ n";
echo"tttt form1.W_etc2_$ii.value= 1 * form1.temp_sum1.value + 1 * form1.temp.value; n";
echo"tttt form1.WP_etc2_$jj.value= 1 * form1.temp_sum2.value + $jj * form1.temp.value; n";
echo"tttt form1.TSUM_$jj.value= 1 * form1.temp_sum3.value + $jj * form1.temp.value; n";
echo"tttt form1.temp_sum1.value= 1 * form1.temp_sum1.value + 1 * form1.temp.value; n";
echo"tttt form1.temp_sum2.value= 1 * form1.temp_sum2.value + $jj * form1.temp.value; n";
echo"tttt form1.temp_sum3.value= 1 * form1.temp_sum3.value + $jj * form1.temp.value; n";
echo "form1.temp_value.value= '0'; n";
echo "form1.temp.value= '0'; n";
}
echo "ttt } n";
}
echo "tt } n";
?>
}
return true;
}
//-->
</SCRIPT>
...
...
..
<input type='text' name='F_".$j."[]' size='1' value='' class='lds_class' onkeypress=calc_ready(this,".$i.",".$j.",'p') onkeyup=calc(this,".$i.",".$j.",'p')>
: 이런 text 박스가 수십개 있습니다.
합계 : <input type='text' name='W_".$i."' size='1' value='".$workrec_total_time[$i]."' class='lds_class'>
<input type='text' name='WP_".$j."' size='1' value='".$workrec_part1_time[$j]."' class='lds_class'>...............
댓글 4
-
beMax
2004.11.16 17:13
-
이동신
2004.11.16 18:02
if( !(47 < event.keyCode && event.keyCode < 58) || ( 95 < event.keyCode && event.keyCode < 106 ))
이소스를 백스페이스로 지울때랑 del로 지울때도 쓸 수 있게 하려고
if( !(47 < event.keyCode && event.keyCode < 58) || ( 95 < event.keyCode && event.keyCode < 106 ) || (event.keyCode == 8) || (event.keyCode == 127))
이렇게 바꿨는데 작동하지 않네요
그냥 if( !(47 < event.keyCode && event.keyCode < 58) || ( 95 < event.keyCode && event.keyCode < 106 ))
로 쓸때는 작동하는데 ...ㅡ.ㅜ -
beMax
2004.11.17 09:12
괄호가 잘못됬는거 같아요..^^;
제가 올려드린게 괄호가 잘못됬네요..ㅎㅎㅎ
if( !((47 < event.keyCode && event.keyCode < 58) || ( 95 < event.keyCode && event.keyCode < 106 ) || (event.keyCode == 8) || (event.keyCode == 127) ))
하나 씩 더있어야 하거든요.. 죄송..^^; -
이동신
2004.11.17 10:43
답변감사드립니다 ^^
그런데 아직도 백스페이스랑 del키는 작동하지 않는군요 ㅠ.ㅠ
return;
위 코드를
function calc_ready(obj,i,j,type) 함수
맨위에 넣어주면 될런가요 ^^?;;