Page 1 of 1

type=file의 onchange event

Posted: 2006 01 23 15:56 20
by tree
안녕하세요.

input file type의 onchange 이벤트를 사용하여 파일 업로드를 만들었습니다만...
네스케이프만 제대로 실행이 되지 않습니다. :evil:

검색해보니 정석대로라면 file type에서 onchange는 원래 없는 이벤트라는 이야기도 있었고... 좀더 살펴보니, 키보드로 필드의 글자를 직접 수정후, 화면의 다른곳에 포커스를 주면 onchange이벤트를 인식하긴 하더라구요.(NC7.1버전) 이건 IE 5.5 미만 버전에서도 비슷한 현상이었구요.

파일을 바로 선택후 onchange이벤트를 발생시킬 방법이 없을까요??
그리고 file type의 onchange 이벤트는 웹표준이 아닌지도 궁굼하네요.

부탁드려요~ :wink:

왜....

Posted: 2006 01 23 17:40 52
by tree
왜 제글에는 덧글이 하나도 안달리는걸까요?
다음글을 보니 덧글이 활발한데....

설명에 문제가 있나요? ㅠ_ㅠ

Re: type=file의 onchange e

Posted: 2006 01 23 19:21 57
by 박민권
tree wrote:안녕하세요.

input file type의 onchange 이벤트를 사용하여 파일 업로드를 만들었습니다만...
네스케이프만 제대로 실행이 되지 않습니다. :evil:

검색해보니 정석대로라면 file type에서 onchange는 원래 없는 이벤트라는 이야기도 있었고... 좀더 살펴보니, 키보드로 필드의 글자를 직접 수정후, 화면의 다른곳에 포커스를 주면 onchange이벤트를 인식하긴 하더라구요.(NC7.1버전) 이건 IE 5.5 미만 버전에서도 비슷한 현상이었구요.

파일을 바로 선택후 onchange이벤트를 발생시킬 방법이 없을까요??
그리고 file type의 onchange 이벤트는 웹표준이 아닌지도 궁굼하네요.

부탁드려요~ :wink:
구글을 통해서도 넷스케이프에서의 문제를 다루는 내용은 못찾았습니다.
음... 아무래도 구버전 맞춰주는건 힘들죠.
ie5.5와 넷스케이프에 대한 처리는 이런식으로 하시는게 어떨까요?

기본동작은 파일을 선택하자마자 추가가 되도록 하고 넷스케이프나 ie5.5일 경우 파일 선택후 추가 버튼을 클릭해야 추가가 되도록 하는겁니다. 이렇게 하는 수밖에 없을 듯 합니다.;;

그리고 <input type="file">의 onchange는 표준이 맞을겁니다.

dtd 선언된것을 보면 아래와 같습니다.

<!ENTITY % InputType "(TEXT | PASSWORD | CHECKBOX | RADIO | SUBMIT | RESET |
FILE | HIDDEN | IMAGE | BUTTON)"
>
<!-- 송신(submit)과 재설정(reset) 외의
모든 애트리뷰트에는 이름(name)이 필요하다 -->
<!ELEMENT INPUT - O EMPTY -- 폼 제어(form control) -->
<!ATTLIST INPUT
%attrs; -- %coreattrs, %i18n, %events --
type %InputType; TEXT -- 입력의 종류 --
name CDATA #IMPLIED -- 폼의 일 부분으로 송신(submit) 됨 --
value CDATA #IMPLIED -- 레디오(radio) 단추와 체크 박스에 필요--
checked (checked) #IMPLIED -- 레디오 단추와 체크 박스에 필요 --
disabled (disabled) #IMPLIED -- 이 내용을 불활성화 --
readonly (readonly) #IMPLIED -- 텍스트와 암호에 사용 --
size CDATA #IMPLIED -- 각 필드의 타입 지정 --
maxlength NUMBER #IMPLIED -- 텍스트의 최대 글자 수 --
src %URI; #IMPLIED -- 이미지를 갖는 필드을 위하여 --
alt CDATA #IMPLIED -- 짧은 설명 --
usemap %URI; #IMPLIED -- 사용자측(client-side) 이미지맵 --
ismap (ismap) #IMPLIED -- 서버측(server-side) 이미지맵에 사용 --
tabindex NUMBER #IMPLIED -- 탭 위치 순위에서의 위치 --
accesskey %Character; #IMPLIED -- 접속키 글자 --
onfocus %Script; #IMPLIED -- 엘레멘트(element)에 초점(focus) 맞춤 --
onblur %Script; #IMPLIED -- 엘레멘트에 초점 해제 --
onselect %Script; #IMPLIED -- 텍스트가 선택되었슴 --
onchange %Script; #IMPLIED -- 엘레멘트의 값이 변경되었슴 --
accept %ContentTypes; #IMPLIED -- 화일 로드를 위한 MIME 타입 목록 --
>

선언 대로라면 못쓸이유는 없다고 봅니다.

Re: type=file의 onchange e

Posted: 2006 01 24 13:05 09
by tree
답변 감사드립니다.
네스케이프쪽은 결국 억지로 해결은 되었어요.

네스케이프에서 file onclick이벤트가 파일 선택후 일어나더군요. 그래서 선택된 바뀐 파일 값을 가지고 있구요. onmouseover와 onclick으로 onchange 이벤트와 비슷한 경우를 만들어 사용하게 되었습니다.