2012-05-10 4 views
3

Demo

Воспроизведено в Chrome 18 на Ubuntu, Chrome Mac, и др.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'); 
});​ 

Это, как представляется, проблема с замирание по умолчанию анимации. Если вы открываете его дважды до завершения замирания, возникает проблема. Установка duration на 0 устраняет проблему, но я вроде как анимация затухания.


Я отправил bug report. На самом деле это a dupe.

+0

Нет ничего плохого в этом, кроме того, что вы ** НЕ ** дважды щелкаете по нему, вы просто нажимаете его один раз, затем щелкаете в другом месте, чтобы закрыть его, если вы хотите его для двойного щелчка, используйте '.dblclick() ' – CKKiller

+0

@ChristopherKenney Вы не можете применять такие условия для конечных пользователей, которые могут удвоить/утроить клик и сказать, что это сломалось, потому что он дважды щелкнул. –

+0

@ Кристофер Кенни: Да, я знаю, но мои пользователи не такие умные. Им нравится делать двойные щелчки. Это не может просто перестать работать, потому что кто-то случайно дважды щелкает что-то, это смешно. – mpen

ответ

0

Это было исправлено с помощью Ticket #8174. Если у вас возникла эта проблема, попробуйте перейти на новую версию пользовательского интерфейса jQuery.

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. У меня репутация 20 тыс. Я думаю, что я понял, как работает SO. Я не принимаю это, потому что это не правильное решение. – mpen

Смежные вопросы