2010-05-06 36 views
18

我有一個日期選擇器的字段。我想知道它是否開放。我試過了:檢查日期選擇器是否打開

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

但它總是返回true。

我該如何檢查它是否打開?

回答

31

這可能是過去的一個可能的錯誤。現在,這個解決方案

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

作品完美

+1

第一次將datepicker附加到元素時,它是不可見的,但可見返回true。該元素還沒有顯示無風格,但它仍然隱藏,不幸的是,在您的代碼中沒有檢測到。仍然是+1。 :) – mikong 2011-08-04 07:25:10

+2

啊,在第一次加載時,你應該檢查它是否爲空。 – mikong 2011-08-04 07:31:03

+0

不適合我。 Both:empty和:visible始終返回true - 在第一次打開日期選擇器之前並始終返回。 – AyCabron 2017-11-01 23:52:23

4

關閉我的頭頂,我能想到使用的日期選擇器控制切換類(或標識)中定義的beforeShowonClose事件的地方,並檢查它的存在,以確定日期選擇控件是否是是否開放。

8

只需設置:

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

CSS文件和你的代碼:

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

將正常工作!

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

訪問日期選擇器的樣式屬性,並在日期選擇器是隱藏的樣式進行比較按鈕。 isCalendarVisible更新'show'&相應地'隱藏'datepicker。我檢查'isCalendarVisible'的值以手動打開或關閉它。

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

當你需要測試元素是否可見,並且你在phantomJS上運行測試(.is(「:visible」)不適用於我)時, – 2015-07-15 22:41:55

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

我已經用這種方法進行日期選擇的肘上的點擊:(:無顯示)

相關問題