묻고답하기

http://www.seearch.co.kr/ts.jpg벌써 몇일재 이것만 하고 있습니다.


링크된 그림과 같이 빨간부분에 숫자를 바꾸면 파란부분에 합계가 자동으로 계산되도록 구현해야합니다.

숫자를 쓰는 칸과 합계칸에는 text input 박스가 있으며 스타일에서 테둘이를 하얀색으로 했기때문에 안보이는거구요

전 onkeypress와 onkeyup을 이용해서 onkeypress때 이미 기록되었던 숫자를 다른 히든인풋박스에 넣고 onkeyup때 새로 기록된 숫자와의 차이를 합계칸에 더해주는 방법을 생각했는데
처음엔 잘되는 거 같았는데

커서가 다른 숫자칸으로 이동할때도 onkeyup이벤트가 일어나는거 같았습니다.

그래서 결과적으로 커서가 다른칸으로 이동할때 앞에서 계산한 값이 합계에 한번 더 더해져서 틀려지더군요

그래서 if( !((47 < event.keyCode && event.keyCode < 58) || (event.keyCode == 08) || (event.keyCode == 46) )){.....와 같이 넣어봤는데 아스키코드가 48-57까지(그러니까 숫자) 는 잘 먹는거 같은데 08번(백스페이스)이나 46번(del키)으로 지울때는 이벤트가 안일어나더라구요.

아 그리구 del키 아스키값도 좀 이상해요. 표에서 찾아본바로는 126인가? 그랬는데 나모웹에서는 46으로 뜨더군요...

제가 써본 소스는 다음과 같구요

<SCRIPT LANGUAGE="JavaScript">
<!--
function calc_ready(obj,i,j,type){
        if( !((47 < event.keyCode && event.keyCode < 58) || (event.keyCode == 08) || (event.keyCode == 46) )){
                return false;
        }
        form1.temp_value.value= obj.value;
        form1.temp_i.value= i;
        form1.temp_j.value= j;
        form1.temp_type.value= type;

  return true;
  }

function calc(obj,i,j,type){
        if( !((47 < event.keyCode && event.keyCode < 58) || (event.keyCode == 08) || (event.keyCode == 46) ))
        return false;
        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.W_$ii.value + 1 * form1.temp.value; n";
                                echo"tttt form1.WP_$jj.value= 1 * form1.WP_$jj.value +1 * form1.temp.value; n";
                                echo"tttt form1.TSUM_$jj.value= 1 * form1.TSUM_$jj.value + 1 * form1.temp.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.W_etc1_$ii.value= 1 * form1.W_etc1_$ii.value + 1 * form1.temp.value; n";
                                echo"tttt form1.WP_etc1_$jj.value= 1 * form1.WP_etc1_$jj.value + 1 * form1.temp.value; n";
                                echo"tttt form1.TSUM_$jj.value= 1 * form1.TSUM_$jj.value + 1 * form1.temp.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.W_etc2_$ii.value= 1 * form1.W_etc2_$ii.value + 1 * form1.temp.value; n";
                                echo"tttt form1.WP_etc2_$jj.value= 1 * form1.WP_etc2_$jj.value + $jj * form1.temp.value; n";
                                echo"tttt form1.TSUM_$jj.value= 1 * form1.TSUM_$jj.value + $jj * form1.temp.value; n";
                        }
                        echo "ttt } n";
                }
                echo "tt } n";
?>
        }
  return true;
  }
function temp(){
        return false;
  }
//-->
</SCRIPT>

.
.
.
.
.


<input type='text' name='F_".$j."[]' size='1' value='".$workrec_time[$i][$k]."' class='lds_class' onkeypress=calc_ready(this,".$i.",".$j.",'p') onkeyup=calc(this,".$i.",".$j.",'p') onBlur=temp()>


아참 문제는 저 빨간부분의 가로 세로 갯수가 수시로 변한다는것입니다.

그래서 지금은 컬럼이

그래서 전체합을 다시 구하기에는...ㅜ.ㅜ

ONCHANGE이벤트마다 새로계산도 생각해봤는데..

새로계산에 딱 한가지 문제가 있습니다.

가로 세로 갯수가 수시로 변하고

저장기능을 생각해서

빨간부분의 text박스의 이름을

F_1[],F_2[],F_3[],F_4[].....
F_1[],F_2[],F_3[],F_4[].....
F_1[],F_2[],F_3[],F_4[].....
F_1[],F_2[],F_3[],F_4[].....
F_1[],F_2[],F_3[],F_4[].....

와 같이 만들었거든요

근데 새로계산하려니 자바스크립트에서

form1.F_1[1].value
form1.F_1[2].value
form1.F_1[3].value
form1.F_1[4].value...

와 같이 하면 필드를 인식못하는거 같던데..ㅜ.ㅜ


꼭 좀 부탁드립니다..ㅠ.ㅠ


글쓴이 제목 최종 글
XE 공지 글 쓰기,삭제 운영방식 변경 공지 [16] 2019.03.05 by 남기남
샤르 君 사랑비 어떻게 하는건지요...; [1] 2007.08.10
Shin.CH PSD 웹레이아웃을 홈피로 어떻게 만드나요? [2] 2007.08.10
엽기왕자 노프레임 타겟지정... [1] 2007.08.10
hansong 저기요 제컴퓨터 갑자기 이렇게 나오거든요 ??? [2] 2007.08.10
신민준 질문좀..홈피 만드는거;;; [1] 2007.08.10
Ming* 아이프레임으로 홈페이지를 만드는중인데.. 자꾸 빈공간이 생깁니다; [2] 2007.08.10
노한영 외부 include 설정에 대해서 질문좀.. [1] 2007.08.10
임홍규 메인 페이지 레이아웃 관련 질문입니다. [1] 2007.08.10
이동신 자동계산 도와주세요..ㅡ.ㅜ [1] 2007.08.10
김성국 게시판추가하구요 [1] 2007.08.10
김선미 제로보드 덧글관련 질문입니다. ㅡㅜ 도와주세요  
김욱 우편번호 조회기능을 어떻게 홈페이지에... [1] 2007.08.10
서봉수 노프레임 제홈피에서 페이지마다 로그인을 해줘야 해요. 어떻게 하죠? [2] 2007.08.10
유상종 파일업로드중 에러가 생겼습니다. 어떻게 해야하죠? [2] 2007.08.10
이승아 로그인 관련 질문, 아니 아니 전체적으로다가!!! [1] 2007.08.10
손명수 게시판 달려고 하거든요 ;;; 고수분들 도와주세요~~~ ㅡ,.ㅡ;; [1] 2007.08.10
히스 저기 제로보드에 로그인스킨에 있는것중에서요. [1] 2007.08.10
손명수 헤더와 푸터가 모죠? ;;; [1] 2007.08.10
대굴 축소하면 화면이 깨집니다..  
김상돈 마우스오른쪽 클릭금지... [1] 2007.08.10
김선종 섬네일 생성시... 문제... [2] 2007.08.10
플로렐라 MySQL에서... [2] 2007.08.10
hanpedro [도움바람] 변수를 받지 못합니다. ㅋ - 소스첨부  
손명수 외부로그인이요... [1] 2007.08.10
히스 아래 소스좀 해석해주세요..-_-;; [1] 2007.08.10
손명수 외부 로그인 설정하는거요~~~ [2] 2007.08.10
[유아독존] htaccess 질문 하나만 받아주세요. [1] 2007.08.10
ufo220 바디에 온로드 삽입하려면? [1] 2007.08.10
이정주 APM(?)을 이용한 웹 상이 아닌 일반하드에서 제로보드 이용하기에 대해 [1] 2007.08.10
이경원 새로운창을 열어도 기존에 열었던 창에서 음악 안꺼지기?!