ASP.NET 에서 우리가 사용한 서버 컨트롤 영역을 클릭 후 ENTER KEY를 누르면

해당 페이지가 다시 로드되는 현상을 많이 봤을 것이다.

 

이 부분은 개발하는 나도 사용하는 사용자도 상당히 신경쓰이고 짜증 나는 일이 아닐 수 없다.

ENTER키를 안먹게 하는 방법이 없을까?

 

그 해결 방법으로 아래와 같은 Javascript 함수로 ENTER 키를 모두 막아 버렸다.

 

function CheckEnter() {

try {

if (!e) var e = window.event;

if (document.all) var key = e.keyCode;

else var key = e.which;

 

if( key == 13 ) {

var tag = e.srcElement ? e.srcElement.tagName : e.target.nodeName ;

var tagId = e.srcElement ? e.srcElement.id : "" ;

 

/*** 1. 원하는 컨트롤 아이디만 등록 ***/

if( tagId == "InputLogin" ) {

CheckLogin();

return false;

}

/*** 2. 원하는 컨트롤만 엔터키 반응 (여기서는 TEXTAREA만) ***/

if( tag == "TEXTAREA") {

return true;

}

return false;

}

}

catch(e) { return true; }

}

document.onkeydown = CheckEnter;

 

여기서 중요한 것은 document.onkeydown = CheckEnter;

함수 내부에 있어서는 안되며 함수 밖에 등록되어 전체 HTML 문서에서의 KEYDOWN 이벤트를 체크 해야 한다.

 

주석 부분의

1. 원하는 컨트롤 아이디만 등록 

웹사이트에서 로그인 부분에서만 ENTER KEY를 사용할 수 있게 하여 로그인체크 함수를 실행 할 수 있게 했다.

 

2. 원하는 컨트롤만 엔터키 반응

이건 사이트 전체의 TEXTAREA에서만 ENTER KEY를 사용할 수 있게 했다.

 

만약 검색 INPUT 에서 ENTER KEY를 사용하려면 검색 INPUT ID를 위의 함수에 추가로 등록하여 사용할 수 있다.

예)

검색 INPUT 박스 <input type="text" id="InputSearch" name="InputSearch" size="20" /> 라면

 

if( tagId == "InputSearch" ) {

CheckSearch();

return false;

}

 

다르게 체크 할 수 있는 방법이 더 있겠지만 일단 -0-;;

+ Recent posts