본문 바로가기

.NET/asp.net

TextBox에서 엔터키 이벤트 지정

728x90
반응형

문제는 간단히 해결된다.

엔터키이벤트가 일어날 TextBox = txtTest1

이벤트실행시킬 버튼 = btnTest1

서버단의 페이지 로드부분

protected void Page_Load(object sender, EventArgs e)
{
     txtTest1.Attributes.Add("onkeypress","if(event.keyCode == 13){" + this.Page.ClientScript.GetPostBackEventReference(btnTest1, null) + ";return false;}");
}

이렇게만 하면 텍스트 박스에서 엔터 쳤을때 해당 버튼의 이벤트가 실행되게 된다

하지만 자바스크립트로 유효성 검사를 실시 할때는 위 코드로는 스크립트를 발생시킬 수 없다


txtTest1.Attributes.Add("onkeypress","if(event.keyCode == 13){ document.getElementById(btnTest1).click();return false;}";

이렇게 처리하면 유효성 검사 까지 실행 가능하다.

또 문제가 있는데 버튼이 서버 컨트롤일 경우 <%=  %> 컨트롤 블록에서 문제가 있을 수 있다.

< 이 문자가 &lt; 로 바뀔수 있기 때문이다. 

나는 이 문제 해결을 위해서 할수 없이 UniqueID를 쓸수 밖에 없었다

txtTest1.Attributes.Add("onkeypress","if(event.keyCode == 13){ document.getElementById("+ btnTest1.UnqueID + ").click();return false;}";

이렇게 버튼의 유니크아이디를 가져와서 버튼 이벤트를 일어나게 하였다.

728x90
반응형