2012-10-11 3 views
1

몇 개의 jQuery Chosen 드롭 다운이있는 div (id = div_search_fields)가 있습니다. div에 첨부 된 키 누르기 수신기가 있습니다. 입력 한 키가 Enter 키이면 숨겨진 제출 단추를 클릭하여 선택한 항목을 제출합니다.Jquery Chosen - keypress 캡처 방지

$("#div_search_fields").keypress(function(e) { 
    if (e.which == 13) { 
     $("#hiddenSubmitButton").click(); 
    } 
}); 

선택한 드롭 다운 중 하나에서 방금 옵션을 선택한 경우 어떤 이유로이 수신기는 호출되지 않습니다. "div_search_fields"DIV 안에는 간단한 텍스트 입력 상자도 있습니다. 텍스트를 입력 한 다음 Enter 키를 누르면 리스너가 예상대로 트리거됩니다.

이것은 Chosen 드롭 다운에 초점을 맞춰야 만 할 것입니다. 그러나 나는 그 이유를 알 수 없습니까? 어떤 아이디어?

답변

1

은 지금까지 나는 JQuery와는 코드를 실행할 수있게되지 않도록 키 누르기 이벤트에 e.preventDefault()를 사용하고 선택한 볼 수 있습니다. 목표를 달성하기 위해 무시할 수있는 함수가 있거나 e.preventDefault()를 탈 수 있습니다.

+0

나는 단지 Enter 키를 눌러 지정된 div 내의 내용이 변경된 경우에만 submit을 실행하기를 원합니다. (두 개의 div가 있고 각각 자신의 제출 버튼이있어서 각 div에 Enter 키 누르기를 듣는 별도의 수신기가 있습니다. 적절한 제출 버튼). 방금 표준 HTML 요소 (드롭 다운, 텍스트 입력)가 있으면 잘 작동합니다. JQuery Chosen을 사용하여 드롭 다운 상자를 초기화 할 때 중단됩니다. 위의 예에서 선택한 JQuery를 사용하는 것처럼 보이지 않습니까? –

+0

예하 당신이 맞습니다. 내가 선택한 JQuery를 사용하지 않았습니다. 나는 현재 그것을보고있다. 바라기를 나는 해결책을 얻을 수 있었다. 현재 나는 Jquery가 keypress 이벤트에서 e.preventDefault()를 사용하여 ur 코드를 실행할 수 없다는 것을 알 수 있습니다. 목표를 달성하기 위해 무시할 수있는 기능이 있어야합니다. – PRP

+0

네 말이 맞다! Chosen javascript의 keydown_checker 함수는 키 누르기를 캡처하고 기본값을 방지합니다. 나는 그 라인을 밖으로 모든 작품은 아름답게 주석! 위의 게시물을 편집하여 올바른 해결책으로 표시 할 것입니다 ... 감사합니다. –

1

두 가지 다음 드롭 다운에서 입력 동적 키 누르기 이벤트가 바인딩 된 후에 발생하면

  1. 는 이벤트가 해당 요소에 바인딩되지 않습니다.

  2. ID는 하나의 요소에 고유해야합니다. 액션을 여러 요소에 바인딩하려면 클래스를 대신 사용하십시오. 대신

사용 CSTE 연구진() :

$(".div_search_fields").on("keypress", function(e) { . . . }); 
+0

리스너가 div에 연결되기 전에 선택한 드롭 다운이 초기화됩니다. "div_search_fields"는 모든 드롭 다운을 포함하는 div의 고유 ID입니다. –

관련 문제