소프트웨어/C# & ASP.NET

ASP.NET 엔터키 처리 방법

falconer 2008. 7. 17. 18:33
로그인 같은 경우

아이디와 비밀번호를 입력 후 엔터 키를 입력할 때

로그인 버튼의 클릭이벤트를 실행시키고 싶을때가 있다.

일반적으로 텍스트박스에서 엔터키를 입력하면 포스트백이 자동으로 일어나지만

원하는 버튼 이벤트를 지정하고 싶을때는 다음의 방법을 사용한다.


<asp:TextBox ID="txtName" runat="server" Width="192px" style="width:108px;height:18px"> </asp:TextBox>

<asp:TextBox ID="txtPassword" runat="server" Width="192px" TextMode="Password"> </asp:TextBox>

<asp:ImageButton ID="btnLogin" runat="server"  ImageUrl="images/main_login_b.gif" OnClick="btnLogin_Click" />


<asp:TextBox ID="otherTextBox" runat="server"  Visible="false"></asp:TextBox>

<asp:ImageButton ID="btnOtherLogin" runat="server" ImageUrl="images/arrow_01.gif" Visible="false" TabIndex="4" OnClick="btnOthersLogin_Click" />






protected void Page_Load(object sender, EventArgs e)

{

        //텍스트박스에서 엔터치면 버튼 클릭이벤트 작동

        othersPass.Attributes["onkeypress"] = "if (event.keyCode==13){" +

        Page.GetPostBackEventReference(btnOthersLogin) + "; return false;}";           

}






페이지가 로드될 때 일어나도록 Page_Load 안에 넣어주고
위의 예제에서는 입력하는 textbox 의 ID="otherTextBox"
그리고 실행하고자 하는 Button 의 ID="btnOthersLogin"  이라고 주었다.

Page_Load에 위의 코드를 입력하지 않고 otherTextBox에서 엔터 키를 치면
내가 원했던 "btnOthersLogin "의 클릭이벤트가 실행되지 않고 "btnLogin"의 클릭이벤트가 실행된다.



othersPass.Attributes["onkeypress"] = "if (event.keyCode==13){" +

Page.GetPostBackEventReference(btnOthersLogin) + "; return false;}";


에서 keyCode==13 이 엔터키를 의미하고 GetPostBackEventReference(btnOthersLogin) 가 ""btnOthersLogin "의 이벤트를 실행시키는 함수이다.

출처 : http://hybridsoul.tistory.com/42
-------------------------------------------------------------------------------------------------

Panel로 영역을 설정하고 DefaultButton을 지정해 주면됩니다.


<asp:Panel ID="Panel1" runat="server" DefaultButton="Btn1" >
          <asp:textbox id="TextBox1" runat="server" />

          <asp:ImageButton id="Btn1" runat="server" ImageUrl="images/btn1.gif"  />

          <asp:ImageButton id="Btn2" runat="server" ImageUrl="images/btn2.gif"   />

</asp:Panel>
출처  : http://poco.egloos.com/355113