2012-07-19 6 views
1

jQuery에서 keyups를 사용하여 간단한 페이지 탐색을 설정하려고합니다. 예를 들어 사용자가 왼쪽 화살표 키를 누르면 페이지에 무언가를로드하려고합니다.사용자가 페이지를 처음 클릭 할 때까지 jquery 키가 실행되지 않습니다.

사용자는 등록 할 키 이벤트에 대한 브라우저 창을 먼저 클릭해야합니다.

는 여기에 내가 사용하고 코드입니다 :

$(document).ready(function() { 
    $(document.documentElement).live("keyup", function(event) { 
     if (event.keyCode == 37) {//left arrow 
     //do something here 
     } 
    }); 
}); 

그것은 초점 문제처럼 보인다,하지만 난 document.documentElement를 사용하여 나는 특히 무엇에 초점을 맞출 필요가 없습니다 의미 읽었습니다.

사용자가 페이지를 한 번 클릭 한 다음 왼쪽 화살표를 누르면 작동합니다. 그러나 페이지를로드하고 클릭하지 않고 왼쪽 화살표를 누르면 충돌이 발생하지 않습니다.

문제를 해결할 방법이 있습니까?

+0

브라우저 가슴이 초점을하지만 클릭이 필요하지 않습니다 확신 (나는'$ (문서) .keydown와 키 이벤트를 많이 사용 ('). –

+1

['.live()'는 가치가 떨어지고 대신'.on()'을 사용하십시오.] (http://stackoverflow.com/questions/9422069/jquerys-live-is-deprecated-what-do-i-use- 지금) – SomeKittens

+0

'on'은이 경우 쓸모가 없습니다.간단히'keydown' 또는'keyup' 함수를 사용하십시오. –

답변

1

페이지에 focus이 없으므로 페이지에 need to click이 표시됩니다. 일부 컨트롤에 초점을 맞추면 작동합니다. 이 경우에는 live가 문제가되지 않지만 live가 depreacted 될 때 on을 대신 사용하십시오.

상태로 포커스를 설정합니다. $('#txt1').focus();이 문구를 주석 처리하면 페이지를 클릭하여 키 업 이벤트를 가져와야합니다.

Live Demo

$(document).ready(function() { 
    $('#txt1').focus(); //This is the statement that puts focus on page 
    $(document.documentElement).live("keyup", function(event) { 


     if (event.keyCode == 37) {//left arrow 
     //do something here 
      alert(""); 
     } 
    }); 
});​ 
+0

좋아요 .Focus()를 수행 할 때 내 다른 요소를 사용해 보았습니다. – user1535082

3

.on()을 사용하고 대리인 이벤트 처리 기능을 사용하지 마십시오. 다음과 같은

$(document).ready(function() { 
    $(document).on("keyup", function(event) { 
     if (event.which == 37) {//left arrow 
     //do something here 
     } 
    }); 
}); 

또는 사용 .keyup() 방법 : 여기

$(document).ready(function() { 
    $(document).keyup(function(event) { 
     if (event.which == 37) {//left arrow 
     //do something here 
     } 
    }); 
}); 

당신은 live가 (사용되지 않음) 필요 document.documentElement하지 않습니다.

+0

그 방법으로 페이지를 클릭해야합니다. – user1535082

+0

아마 iframe에서 페이지를로드하는 중입니다. 클릭해야합니다. – user1535082

0

.live() -function은 더 이상 사용되지 않습니다. 대신이 시도 :

$(document).ready(function() { 
    $('body').on("keyup", function(event) { 
     if (event.keyCode == 37) {//left arrow 
     //do something here 
     } 
    }); 
}); 
0

아직 문서를 가지고, 사용되지 않는 liveon를 사용할 필요합니다.

또한 document.documentElement을 사용할 필요가 없습니다.

단순히이 잘 작동하고 더 클릭이 필요하지 않습니다

$(document).keydown(function(){ 
}); 

을한다.

관련 문제