2012-03-12 4 views
0

jQuery와 ajax를 사용하여 내 사이트에서 실시간 검색을 만들려고합니다.jQuery 키가 페이지로 이동할 때 트리거됩니까?

그러나 검색 상자에 포커스가 있고 다른 브라우저 탭으로 이동하면 jQuery는 검색 페이지로 돌아올 때 keyup() 함수를 트리거합니다.

나는 재현 JSfiddle

단계에서이를 조롱했습니다

  1. 열고 JSfiddle 및 다른 브라우저 탭
  2. 텍스트 상자에 포커스를 다른
  3. 이동주세요 브라우저 탭
  4. 원래 페이지 (JSfiddle)로 돌아 가기

예상/구성 :keyup()은 어떻게됩니까

트리거되지 않습니다 : 나는 자바 스크립트에 대해 잘 모르는 타임 스탬프

같이keyup()이 트리거와 나는 읽었습니다 jQuery 문서,하지만 나는 대답을 생각해 낼 수 없다.

내가 잘못했기 때문에 이런 일이 발생 했습니까? Javascript/jQuery 또는 브라우저 문제입니까? (Chrome 사용) 어떻게 이런 일이 일어나지 않도록 할 수 있습니까?

감사합니다. 부드럽게 다루십시오.

단지보다는 단지 탭 사이를 클릭보다, Ctrl + Tab을 사용하는 경우 트리거가 나타납니다

UPDATE. 페이지에서 클릭하여 복제 할 수 있지만 Ctrl + Shift + Tab을 사용하면 검색 페이지로 돌아갈 수 있습니다.

나는 해결책이 아래에 언급 된 것처럼 가정하고 keyCode 9를 false으로 반환하지만 다른 제안을 위해 열어 둡니다.

+0

메신저 너무 크롬을 useing하고 –

+0

텍스트 상자가 멀리 탭하기 전에 초점이 있습니까 재현 할 수 있습니까? 그것은 수치 다. 나는 내가 도울 수있는 모든 것을 끝내기를 바랐다. –

+0

괜찮습니다. 그런데 왜 그러한 이벤트를 필터링해야합니까? 입력 값을 읽으십시오. – kirilloid

답변

1

크롬도 사용하고 있습니다 (win7). 재현 할 수 없습니다. 당신을위한 하나의 해결책은 어떤 키 코드 (e.keyCode)가 생성되는지 확인하는 것이며, 항상 동일한 키 코드라면 return false입니다. 예를 들어 키 코드가 37 인 경우

$('#search').keyup(function(e) { 
    if(e.keyCode == 37) return false; 
    $('#test').append('<li>'+e.timeStamp+'</li>'); 
}); 
​ 
+0

이것은 물론 keyup 함수에서 해당 키를 제거하므로 해당 특정 키를 테스트하지 않으려는 경우가 필요합니다. – ahren

+0

사파리에서도 복제 할 수 있습니다. 흥미롭게도 keyCode는 9입니다. –

+0

예 :'Ctrl + V '도'keyup' 이벤트를 생성합니다. 확실하지 않습니다. 필터링이 실제로 필요합니다. – kirilloid

관련 문제