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-;;
'Web Platform' 카테고리의 다른 글
ASP.NET 3.5의 새로운 ListView 컨트롤 (0) | 2009.06.30 |
---|---|
Custom Web.Config 만들기 (0) | 2009.06.30 |
HTML 특수문자 사용하기 (0) | 2009.06.29 |
웹서비스(Web Service)를 이용한 파일 업로드(3) ( Web Site 만들기 ) (0) | 2009.06.29 |
웹서비스(Web Service)를 이용한 파일 업로드(2) (DLL 만들기) (0) | 2009.06.29 |