2013-05-21 2 views
4

이 질문은 여러 개의 datepicker 컨트롤이있는 페이지와 관련된 점만 제외하면 Check if datepicker is open과 비슷합니다.위젯이 열려있는 datepicker를 알려주는 방법

페이지에 여러 날짜 피커가있는 경우 jQuery UI는 모든 날짜 피커간에 공유되는 하나의 날짜 피커 위젯 만 작성하는 것으로 나타납니다.

datepicker UI 또는 다른 방법을 통해 위젯이 열려있는 날짜 피커를 찾는 방법을 찾으려고합니다. 불행하게도 시도와 같은 진정한 시험 : 관계없이의

$('#someDatepicker').datepicker('widget').is(':visible'); 

반환 사실은 위젯이 한 어딘가에 볼로 열려 있습니다 날짜 선택기. 나는이 내부 개체로 좀 더 파고와 fiddle을 채찍질이 코드를 사용하여

inst = $.datepicker._getInst(input); 
if ($.datepicker._curInst && $.datepicker._curInst !== inst) { 
    ... 
} 

:

+1

유일한 제안은 'beforeShow' 이벤트를 사용하여 datepicker가 속한 요소를 캡처하고이를 전역 변수로 저장하는 것입니다. 대화 상자의 소유자를 찾는 현명한 방법이 아닌 것 같습니다. http://api.jqueryui.com/datepicker/#option-beforeShow – Archer

답변

4

source code for datepicker을 통해 크롤 링 후 나는 라인 (718)의 주위에 몇 가지 관련 코드를 발견했다. $.datepicker._curInst.id이 datepicker widget이 열려있는 텍스트 상자의 ID를 제공합니다.

개체는 내부적이고 문서화되어 있지 않으며 향후 라이브러리 버전에서 변경/이동/제거 될 수 있으므로 사용상의 책임은 사용자에게 있습니다.

+0

$ selector를 호출 할 때 현재 인스턴스가 다시 할당 되었기 때문에 .datepicker ('refresh') 나는 $ .datepicker._curInst.id를 사용하여 실제로 어떤 datepicker가 새로 고침이 필요한지 결정했습니다. – Olivier

관련 문제