2012-05-10 92 views
3

Demo

在Ubuntu,Chrome Mac和其他版本的Chrome 18中轉載。雙擊時,jQuery UI Datepicker不會關閉

只需雙擊該鏈接,然後選擇一個日期。日期選擇器變得不可關閉。我該如何解決?

我想檢查日曆再次顯示它之前當前打開的,但我can't see a property for that

HTML

<a href="#">double click me</a><input/>​ 

JS

$('input').datepicker(); 
$('a').click(function() { 
    $('input').datepicker('show'); 
});​ 

這似乎是默認的動畫漸變的一個問題。如果在淡入淡出完成前打開它兩次,則會出現問題。設置duration0解決了這個問題,但我喜歡淡入淡出的動畫。


我提交了一個bug report。其實是a dupe

+0

沒有什麼不對的地方,但事實上,你**不要**雙擊它,你只需點擊一次,然後單擊其他地方關閉它,如果你想爲雙擊然後使用'.dblclick ()' – CKKiller

+0

@ChristopherKenney您不能對可能雙擊/三擊的最終用戶強制執行此類條件,並且因爲雙擊而斷定它已損壞。 –

+0

@ChristopherKenney:是的,我知道,但我的用戶並不那麼聰明。他們喜歡雙擊事物。這不能停止工作,因爲有人不小心雙擊某件東西,這很荒謬。 – mpen

回答

0

這是通過Ticket #8174固定。如果您遇到此問題,請嘗試升級到更新版本的jQuery UI。

0

也許這樣的事情?

$('a').dblclick(function() { 
    if ($('input').datepicker('widget').is(':visible')) { 
     $('input').datepicker('hide'); 
    } 
});​ 
+0

你試過了嗎?不適合我。此外,在動畫完成前單擊兩次時出現問題,實際上它不是雙擊(AFAICT)特有的,因此,即使此黑客工作正常,但如果用戶對它進行了完美定時,它將無法在更長的時間內運行。 – mpen

2
$('input').datepicker(); 
$status = true; 
$('a').click(function() { 
    if ($status){ 
     $('input').datepicker('show'); 
      $status = false; 
    } 
    else{ 
    $('input').datepicker('hide'); 
     $status = true; 
    }  
}); 

這可能工作,你想要它

+0

看起來工作。我必須確保變量與datepicker的實際狀態保持同步。 – mpen

+0

謝謝mattematico。我有20K代表;我想我已經想出了SO的工作原理。我不接受這個,因爲這不是一個合適的解決方案。 – mpen