반응형
마스터페이지로 사이트를 구성하다보면 TextBox에 엔터키를 입력했을 경우 엉뚱한 동작이 발생하는 경우가 있다.
내경우에는 마스터페이지에 올려놓은 로그아웃버튼이 동작을 한다.

해결방법은 두가지가 있다.

1.자바스크립트로  if(event.keyCode == 13) return false; 를 심어주는 방법이다.
내경우엔 TextBox1.Attributes["onKeyPress"] = "if(event.keyCode == 13) return false;";라고 추가했다.

그러나 1의 방법은 한계가 있다. 모든컨트롤을 일일이 등록해야하고 html컨트롤은 별도로 추가해야하는 불편함이 있다.

2. 다른방법은 마스터페이지에 defaultbutton속성을 이용하는 것이다.
먼저  아래와 같이 서버컨트롤 버튼을 추가한다. 물론 <div>로 감싸서 화면에는 보이지 않도록 한다.
<div style="display:none"><asp:Button ID="btnNull" runat="server" /></div> 
그리고 <form에  defaultbutton에 추가한 서버컨트롤 ID를 작성한다.
<form id="form1" defaultbutton="btnNull">

 
참고로 엔터키 입력할때마다 페이지리프래쉬가 일어나는 현상을 막기 위해서
마스터 페이지 최초로딩시 btnNull버턴의 onclick이벤트에 엔터키를 막는 1의 코드를 등록했다.
btnNull.Attributes["onclick"] = "return EnterKeyBlock();";
[EnterKeyBlock()]가 자바스크립트 함수로 1).의 자바스크립트를 기록해둔 것이다.

+ Recent posts