2013-04-20 23 views
5

Ho due elementi input che funzionano come datepicker dell'interfaccia utente jQuery. Dopo aver effettuato una selezione sul primo elemento datepicker, dovrebbe concentrarsi automaticamente sul secondo elemento datepicker e mostrare il calendario, permettendoti di fare una scelta facile e veloce.jQuery UI Datepicker - Perché il 2nd datepicker scompare onfocus?

Per qualsiasi motivo, il secondo DatePicker/Calendario viene visualizzato per un momento e quindi scompare. Non sono sicuro del perché sta scomparendo; qualcuno può offrirmi una spiegazione del perché sta scomparendo e una possibile soluzione?

Attualmente utilizzando le seguenti librerie: jQuery 1.8.3, jQuery UI 1.9.2

Ecco il codice Attualmente sto usando:

<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' 
}); 

Ecco un violino: http://jsfiddle.net/B78JJ/

Se uno qualsiasi altre informazioni sarebbero utili non esitate a chiedere e sarò felice di dare una mano.

risposta

4

Sembra un problema di temporizzazione messa a fuoco, la soluzione rapida è quella di utilizzare un piccolo timeout:

$('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); 
    } 
}); 

Vedi working fiddle

+0

Questo ha funzionato in IE, Chrome, Firefox e Safari per me. Grazie Nelson. Sai se questo è un problema comune con gli eventi 'onfocus'? –

+1

Probabilmente è un caso di errore/angolo nel codice jquery-ui datepicker, sarebbe necessario dedicare un po 'di tempo per eseguire il debug di datepicker per trovare il bug esatto, quindi se non si vuole passare il tempo su quello allora la soluzione del timeout è la facile via da seguire. – Nelson

+0

È quello che sto per andare avanti e usare. Metterò da un po 'di tempo a cercare di trovare l'errore qualche volta ma devo rispettare le scadenze per ora! Grazie per la soluzione. –

0

A CAUSA DI QUESTA

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

è possibile utilizzare

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

Perché sarebbe quel codice specifico causa un problema? –

+0

abbiamo bisogno di aprirlo dopo un po 'di tempo – PSR

+0

è un problema di temporizzazione afocus – PSR