2013-04-20 4 views
5

У меня есть два элемента input, которые функционируют как jQuery UI datepickers. После того, как вы сделаете выбор в первом элементе datepicker, он должен автоматически сфокусироваться на втором элементе datepicker и показать календарь, что позволит вам легко и быстро сделать выбор.jQuery UI Datepicker - Почему второй фейерпик исчезает в фокусе?

По какой-то причине второй datepicker/calendar появляется на мгновение, а затем исчезает. Я не уверен, почему он исчезает; может ли кто-нибудь предложить мне объяснение, почему он исчезает и возможное решение?

В настоящее время с использованием следующих библиотек: JQuery 1.8.3, JQuery UI 1.9.2

Вот код, я в настоящее время с помощью:

<ul class="fields"> 
    <li><label>Date picker #1</label> 
     <input type="text" class="date-picker-1" /> 
    </li> 
    <li><label> Date picker #2</label> 
     <input type="text" class="date-picker-2" /> 
    </li> 
</ul> 

$('input.date-picker-1').datepicker({ 
    constrainInput: true, 
    hideIfNoPrevNext: true, 
    onSelect: function() { 
     $(this).closest('.fields') 
      .find('.date-picker-2').datepicker('show'); 
    } 
}); 

$('input.date-picker-2').datepicker({ 
    onFocus: 'show' 
}); 

Вот скрипка: http://jsfiddle.net/B78JJ/

Если какие-либо Другая информация была бы полезной, пожалуйста, не стесняйтесь спрашивать, и я буду рад помочь.

ответ

4

Кажется, вопрос фокус синхронизации, быстрый обходной путь заключается в использовании небольшой тайм-аут:

$('input.date-picker-1').datepicker({ 
    constrainInput: true, 
    hideIfNoPrevNext: true, 
    onSelect: function() { 
     var dees = $(this); 
     setTimeout(function() { 
      dees.closest('.fields').find('.date-picker-2').datepicker('show'); 
     }, 100); 
    } 
}); 

См working fiddle

+0

Это работало в IE, Chrome, Firefox и Safari для меня. Спасибо Нельсону. Знаете ли вы, что это распространенная проблема с событиями 'onfocus'? –

+1

Скорее всего, это код ошибки/кода в jQuery-ui datepicker, для этого потребуется потратить некоторое время на отладку datepicker, чтобы найти точную ошибку, поэтому, если вы не хотите тратить свое время на это, тогда обходной путь легкий путь вперед. – Nelson

+0

Это то, что я собираюсь использовать и использовать. Я приложу некоторое время, пытаясь найти ошибку когда-нибудь, но на данный момент мне нужно соблюдать крайние сроки! Спасибо за решение. –

0

ИЗ ЭТОЙ

$(this).closest('.fields') 
      .find('.date-picker-2').datepicker('show'); 

Вы можете использовать

window.setTimeout(function(){ 
      $('.date-picker-2').datepicker('show'); 
     }, 1); 
+0

Почему этот конкретный код вызывает проблему? –

+0

нам нужно открыть, что через некоторое время – PSR

+0

это проблема с выбором времени фокусировки – PSR

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