2010-05-06 19 views
18

मेरे पास डेटपिकर वाला फ़ील्ड है। मुझे पता है कि यह खुला है या नहीं। मैं के साथ की कोशिश की है:जांचें कि डेटपिकर खुला है

$("#filter_date").datepicker("widget").is(":visible") 

लेकिन यह हमेशा सच देता है।

मैं यह कैसे देख सकता हूं कि यह खुला है या नहीं?

उत्तर

31

यह अतीत में एक संभावित बग हो सकता है। अब इस समाधान

$("#filter_date").datepicker("widget").is(":visible") 

काम करता है पूरी तरह से

+1

पहली बार datepicker एक तत्व से जुड़ा हुआ है, यह अदृश्य और अभी तक दिखाई रिटर्न सच है। तत्व में अभी तक कोई शैली नहीं है लेकिन यह अभी भी छिपा हुआ है, और दुर्भाग्यवश, आपके कोड में नहीं पता चला है। फिर भी, +1। :) – mikong

+2

अहह, पहले लोड पर, आपको यह जांचना चाहिए कि यह है: खाली। – mikong

+0

मेरे लिए काम नहीं करता है। दोनों: खाली और: दृश्य हमेशा सत्य लौटते हैं - पहली बार डेटपिकर खोला जाता है और हमेशा बाद में। – AyCabron

4

मेरे सिर के ऊपर बंद, मैंने कहीं beforeShow और onClose घटनाओं datepicker नियंत्रण एक वर्ग टॉगल करने के लिए (या एक झंडा) के लिए परिभाषित का उपयोग कर, और यह जांच जो की उपस्थिति निर्धारित करने के लिए datepicker नियंत्रण है या नहीं के बारे में सोच सकता है खुला या नहीं।

8

आप सेट:

#ui-datepicker-div { display: none; } 

अपने सीएसएस फ़ाइल में और अपने कोड:

$("#filter_date").datepicker("widget").is(":visible") 

सही ढंग से काम करेगा! (Display: none):

var datePickerStyle = $('.datepicker').attr('style'); 
var noneStyle = 'display: none;'; 
if(datePickerStyle.indexOf(noneStyle) != -1){ 
    console.log('shown'); 
} else { 
    console.log('not shown'); 
} 
1

पहुँच datepicker की शैली विशेषता है और एक शैली जब datepicker छिपा हुआ है के साथ तुलना बटन। isCalendarVisible तदनुसार 'शो' & 'छुपा' पर अपडेट हो रहा है। मैन्युअल रूप से इसे खोलने या बंद करने के लिए मैं 'isCalendarVisible' का मान जांचता हूं।

function toggleCalendar() { 
     if (isCalendarVisible) { 
      $(".datepicker .add-on").datepicker("hide"); 
     } else { 
      $(".datepicker .add-on").datepicker("show"); 
     } 
    } 
+0

यह वास्तव में अच्छा होता है जब आपको परीक्षण करने की आवश्यकता होती है कि क्या तत्व दिखाई देता है, और आप phantomJS (.is (": visible") पर परीक्षण चलाते हैं, मेरे लिए काम नहीं करते हैं) –

0
var isCalendarVisible;  
    $(".datepicker).datepicker().on("show", function() { 
      isCalendarVisible = true; 
    }).on("hide", function() { 
      isCalendarVisible = false; 
    }); 

मैं एक के क्लिक करने पर datepicker की टॉगल के लिए इस दृष्टिकोण का इस्तेमाल किया है

संबंधित मुद्दे