2009-05-22 5 views
1

많은 버튼을 호스팅하는 jQuery UI 대화 상자가 있습니다.jQuery UI 대화 상자가 포커스를 도용합니다

나는이 버튼들에 키보드 컨트롤 (탭 네비게이션)이 있기를 원한다. 그래서 대화 상자의 open 이벤트 핸들러에 초점을 맞추어 첫 번째 버튼을 설정했다.

이 동작이 눈으로 보일 수도 있고 document.activeElement를 사용하여 확인할 수도 있습니다.하지만 초점이 도난 당했고 다른 것이 초점을 맞 춥니 다.

나는 지금까지 내가 더 이상 갈고리가 없으므로 초점이 무엇인지보아야한다고 생각하지 않습니다.

누구나 비슷한 문제가 나타 났습니까? '그러나 그들은 돈 - 나는 또한 그것의 jQuery 버튼을 추가 한 참고 -

경우 당신은 관심에서

, 내 코드는이 (아래에 설명 된대로 초점을 추가 개정) doc.ready에서

입니다 키보드 이벤트에 모두 반응하는 것 같습니다.하지만 그것은 별개의 질문입니다.

 $("#dialogSearchType").dialog 
     (
      { 
       bgiframe: true, 
       height: 180, 
       width: 350, 
       modal: true, 
       autoOpen: false, 
       show: 'drop', 
       hide: 'fold', 
       buttons: { "Street": function() { HandleSearchStreetClick(); $(this).dialog("close"); }, 
        "Property": function() { HandleSearchPropertyClick(); $(this).dialog("close"); } 
       }, 
       focus: function(event, ui) { $("#btnSearchTypeProperty").focus(); } 
      } 
     ); 


    <div id="dialogSearchType" class="searchDialog" style="width: 280px; display: none" title="Search For..." onkeyup="HandleSearchTypeDialogKeyUp(event)"> 
     <span>What would you like to search for?</span> 
     <br />     
        <input type="button" tabindex="1" id="btnSearchTypeStreet" class="button" value="Street" onclick="HandleDialogSearchStreetClick()" /> 
     <input type="button" tabindex="2" id="btnSearchTypeProperty" class="button" value="Property" />   

    </div> 

여기서 알 수 있듯이 이벤트 처리기를 추가했지만 아무런 변화가 없습니다.

답변

1

open 이벤트 핸들러 대신 focus event handler을 사용해보고 도움이되는지 확인해보십시오. 대화 상자가 모달이 아니라면 대화 상자가 열릴 때뿐만 아니라 대화 상자에 포커스가있을 때마다 기본 단추가 포커스를 얻길 원할 것입니다. 그래도 문제가 해결되지 않으면 질문에 코드를 추가하는 것이 좋습니다.

+0

감사했다 흥미로운 솔루션을 찾을 수 있습니다. 내가 가지고있는 다른 BIG Q (나는 별도의 질문으로 생각합니다)는 내장 된 버튼 (버튼 옵션 사용)이 키보드 입력을 전혀받지 않는다는 것입니다. jQuery UI가 표시 될 때 jQuery UI가 포커스 중 하나에 포커스를 설정하는 것을 볼 수 있지만 작동하는 유일한 키보드 이벤트는 대화 상자를 닫는 ESC입니다! :( – Duncan

1

그래, 문제가 무엇인지 알 겠어.

대화 상자는 모달로 설정됩니다.

jQuery는 문서 수준에서 키보드 이벤트를 가로 채고이를 취소합니다.

나는 그게 싫은가, 그래서이 사건 처리기를 파괴하고 내 자신을 추가하는 방법을 시도하고 있다고 생각합니다.

추신 : 누구든지 머리 꼭대기에서 어떻게하는지 알고 있다면 알려주세요! 내가 편집 한 내 질문을하고, 코드를 추가 -

관련 문제