ASP.NET 텍스트박스 엔터키 이벤트(수정)
ASP.NET 2011. 8. 17. 15:59
게시판에서 검색 텍스트박스에 단어를 쓰고 엔터를 딱!!!! 쳤는데 로그아웃됨
....
......
..............ㅋ
조회 버튼 옆에 있는 텍스트박스인데 왜 조회 버튼을 자동으로 눌러주지 않냐며
....다시 로그인을 하는..하.....
이런 상황이 없도록 개발해야겠죠.
텍스트박스에 엔터키를 눌렀을 때 조회 버튼의 이벤트를 참조하도록 하는 겁니다.
protected void Page_Load(object sender, EventArgs e)
{
this.txtSearch.Attributes["onkeyPress"] = "if(event.keyCode == 13) {" +
Page.GetPostBackEventReference(this.btnSubmit) + "; return false;}";
}
{
this.txtSearch.Attributes["onkeyPress"] = "if(event.keyCode == 13) {" +
Page.GetPostBackEventReference(this.btnSubmit) + "; return false;}";
}
2013년 02월 27일 수정
그러니까 원인은, 왜 그런 현상이 일어나느냐 하는건데
form 태그 안에 있는 가장 첫번째 submit 의 이벤트를 타게 된다는 겁니다.
저는 로그아웃 버튼이 가장 위에 있었기 땜에... 엔터를 치면 로그아웃으로ㅋㅋㅋㅋㅋㅋㅋㅋ..
그래서 form 태그 바로 아래에 return false 이벤트를 갖는 submit 버튼을 숨겨놓고
Page_Load 함수에서 해당 form의 DefaultButton을 숨겨놓은 첫번째 submit 버튼의 ID로 지정해주면 되죠.
Site.Master
<form id="frm" runat="server" clientidmode="Static">
<asp:Button ID="btnFalse" runat="server" ClientIDMode="Static"
OnClientClick="javascript:return false;" CssClass="hidden" />
...생략
<asp:Button ID="btnFalse" runat="server" ClientIDMode="Static"
OnClientClick="javascript:return false;" CssClass="hidden" />
...생략
Site.Master.cs
protected void Page_Load(object sender, EventArgs e)
{
this.frm.DefaultButton = this.btnFalse.ID;
...생략
{
this.frm.DefaultButton = this.btnFalse.ID;
...생략