2013-01-11 3 views
0

두 개의 버튼 로그인 및 가입이 포함 된 클래식 ASP에서 로그인 페이지가 있습니다. 또한 내가 숨겨진 CSTE 연구진은 양식 다음 단계키 누름 이벤트 request.form이 null이 됨

다른 사람으로 Request.Form (가입) = 가입

로그인으로 Request.Form이 (제출)하면 내가 을 확인하고 제출 =

로그인하는 제출 버튼이 있습니다

모든 브라우저에서 잘 작동하지만 IE에서는 입력 키를 눌렀을 때 request.form (submit) = login과 request.form (signup) = signup을 입력했지만 입력 버튼을 클릭하면 제대로 작동합니다. 모든 아이디어가 왜 request.form (submit) = login에 아무것도 표시되지 않는지.

답변

0

문제는 매우 기본적이고 근본적입니다. Internet Explorer에는 "기본"제출 단추가 없습니다. 모든 브라우저는 ENTER 키를 통해 양식을 제출할 때 행동 방법을 자유롭게 선택할 수 있습니다. 최신 브라우저는 Internet Explorer가 IE 인 동안 첫 번째 제출 버튼의 값을 보내는 논리적 인 방법을 선택합니다 (클릭 한 것처럼). 비우호적 인 방법. Internet Explorer 용 코드를 작성하지 않는 한이 "문제"의 근본을 고칠 수있는 놀라움은 없습니다.

이 주위 유일한 방법은 자바 스크립트를 사용하고 특정 선택 브라우저를 강요는 을 Enter 키를 눌러에 버튼을 제출합니다. 이를 위해 먼저 로그인 버튼에 고유 한 ID를 추가

<input type="submit" name="submit" value="login" id="btnLogin" /> 

이제 폼 태그에 onkeypress 처리기를 추가 : 은 내부에 누를를 입력 할 때마다

<form action="YourPage.asp" method="POST" onkeypress="if (event.keyCode === 13) { document.getElementById('btnLogin').click(); return false; }"> 

이는 로그인 버튼을 클릭 에뮬레이트합니다 형태.

양식에 <textarea>이 포함되어있는 경우에만 ENTER을 입력해도 좋지 않은 양식이 제출됩니다. 그들이 행동 그들 각각이를 추가해야처럼 행동하도록하려면 :

<textarea onkeypress="event.cancelBubble = true;"> 

는 위의 <form> 키 누르기 이벤트에 위쪽으로 버블 링에서 이벤트 삭제됩니다.