2009-11-26 8 views
0

폼 필드를 멀리 (blur) 이동할 때 및 양식 필드 내에서 Enter 키를 누를 때 모두 호출 할 함수 (filterLeads) 있습니다.jQuery 키 누르기 이벤트 문제

$('#filter input, #filter select').blur(filterLeads); 
$('#filter input, #filter select').keypress(function(e){if(e.which == 13) {filterLeads();}}); 

흐림 효과가 제대로 작동하지만 키 누르기 이벤트에 문제가 있습니다. filterLeads()를 호출하기 전에 이벤트가 발생하지 않으면 이벤트가 시작되지 않습니다.

$('#filter input, #filter select').keypress(function(e){if(e.which == 13) {alert(e.which);filterLeads();}}); 

경고 (올바른 키 코드가 표시됨)를 확인한 후 올바르게 filterLeads()를 호출합니다.

아이디어가 있으십니까? (브라우저 FF 3.0)

+2

은'원인'팝업 alert' 윈도우가 작동하는지하게 이유를 설명 할 수있는, 화재 blur'. – bobince

+1

filterLeads는 이벤트를 매개 변수로 사용합니까? – Boldewyn

+0

'filterLeads()'함수를 보여주십시오. –

답변

1

그냥 시도 : 필드를 포함하는 다른 형태는 (있는 경우)를 제출하고 도착하기 때문에 당신은 익명 함수 내에서 return false;, 페이지를 다시로드해야합니다.

filterLeads가 이벤트를 매개 변수로 예상하는 경우, filterLeads(e)을 반드시 작성하십시오. 화재 blur() :

$('#filter input, #filter select').keypress(function(e){$(e.target).blur();}); 

(jQuery를 - 얘기들이었다, 사용자 정의가있을 수 있기 때문에 jQuery를 이벤트 첨부) 아무것도 다른 할 수없는 경우 그리고

.

$('#filter input, #filter select').keypress(function(e){if(e.which == 13) {filterLeads(); e.preventDefault(); }}); 
+0

그건 효과가없는 것 같습니다. Enter 키를 누를 때 페이지가 다시로드되지 않으므로 양식 작업이 트리거되고 있다고 생각하지 않습니다 (제출 단추 없음). – Tom

+0

keyup 이벤트에 작업을 시도하십시오. 어떤 변경 사항이 있습니까? – Boldewyn

0

단지 다음과 같이 이벤트 핸들러 내부 e.preventDefault();를 추가합니다. 또한 keypressthis information에 따라 사용하기에 최적의 이벤트가 아닐 수 있습니다.

이 같은 것을보십시오 :

$("#filter input, #filter select").keyup(function(e){ 
var key = (e.which) ? e.which : e.keyCode; 
if(key == 13){ filterLeads(e) } 
}); 
+0

등록 된 다른 이벤트 핸들러가없는 경우 기본적으로 false를 리턴하는 것과 같습니다. – Boldewyn

+0

예, 아쉽게도 작동하지 않습니다. – Tom

+0

stopPropagation() 대신 preventDefault()를 사용했습니다. 죄송합니다 ... – krcko

2

당신은 FF를 대상으로하는 이유를 모르겠어요 ...하지만 당신은 또한 e.keyCode를 사용하여 all non-FF browsers을 포함해야한다 :

+0

코드는 실제로 내가 일하는 회사의 내부 웹 응용 프로그램에서 사용되고 있습니다. Firefox가 Firefox에 액세스 할 수 있음을 보증 할 수 있습니다. 나는 브라우저 코드를 작성하는 데 매우 열중하고 그 정보는 매우 유용하다고 말했지 만 - 감사합니다 :) – Tom

+0

감사합니다. u가 내 문제를 해결했습니다 :) –