Blog of Hyeonseok

로그인 할때 서밋이 여러번 된다.

로그인 화면에서 파이어폭스의 아이디/비밀번호 저장 확인 창이 무려 세번이나 뜬다. 명백한 버그다.

버그 재현 과정

1. 사용 브라우저 Fx 2.0.0.1
2. 로그인 화면
3. 이메일과 비밀번호를 입력한다.
4. 아직 커서가 비밀번호 인풋에 있는 상태에서 엔터키를 누른다.
5. 비밀번호 입력 확인 창이 두개 발생한다.
6. 둘다 no를 클릭하면 관리자 화면으로 바뀌는데
7. 또 비밀번호 확인 창이 뜬다.

로그인 화면에서 파이어폭스의 비밀번호 입력 확인 창이 두번 나온 화면

기대 결과

당근 비밀번호 확인 창은 한번만 나와야 되지...

버그 원인

HTML 코드를 열어보니...

비밀번호 입력창에

<input type="password" name="password" maxlength="64" onkeydown="if (event.keyCode == 13) document.forms[0].submit()" tabindex="2" />

이렇게 되어 있다. 비밀번호 입력창에서 엔터키를 치면 폼을 서밋한다. 그런데 일반적으로 폼은 엔터를 치면 서밋이 된다. 즉 위와 같은 처리를 해줄 필요가 전혀 없다. 위와 같은 코드가 관용적으로 사용되게된 이유는 HTML을 모르는 개발자들이 폼을 제작할 때 서밋버튼을 사용하지 않고 이미지와 자바스크립트로 서밋처리를 할 경우 엔터키가 폼을 서밋하지 못하기 때문이다. 그런데 이 로그인 화면은 이미 <input type="image"> 서밋버튼을 이용하고 있다. 따라서 그냥 엔터키 치면 서밋이 된다.

자바스크립트 빼라.

2007. 1. 3. 10:48