5

di jQuery mantiene riapertura dopo aver fatto clic su una data in IE 8, anche sulla loro pagina di configurazione:jQuery datepicker mantiene la riapertura in IE datepicker

http://jqueryui.com/demos/datepicker/

Qualcuno sa come risolvere questo problema? Non conosco la pagina demo, ma sto avendo lo stesso identico problema con jQuery 1.6.2 e jQuery UI 1.8.15.

Inoltre, impostando le opzioni MinDate e MaxDate non sembra avere alcun effetto in IE 8. È possibile che questo sembra essere vero anche con IE 7.

+0

Ho appena imbattuto in questo stesso problema. Sembra essere un nuovo comportamento introdotto in 1.8.15. Sto cercando una soluzione. –

+0

Il downgrade all'interfaccia utente jQuery 1.8.14 ha funzionato per me. –

+0

C'è una versione "stabile" di 1.8.16 che ha risolto anche questo problema. –

risposta

1

1.8.14 works fine in IE8.

La riapertura sembra essere un bug in 1.8.15, vedere broken demo.

+0

Grazie! Ho eseguito il downgrade a 1.8.14 e ho risolto il problema di riapertura del calendario. Spero che qualcuno abbia una soluzione per i problemi minDate e maxDate. –

+0

Ok, minDate e maxDate erano il mio errore. Stavo passando la data nel formato sbagliato. Stavo passando il nuovo Date ('2011-08-16') invece di Date ('08 -18-2011 ') come opzione minDate. –

+0

Felice di aver risolto l'altra parte. Ho cercato l'elenco di bug dell'interfaccia utente jQuery ma nulla che corrisponda a ciò che hai trovato. Lo solleverò da solo domani se non riesco a trovare un bug esistente. – andyb

1

Ho avuto lo stesso problema con IE8 e la versione min personalizzata di Jquery UI 1.8.16 (tutte le opzioni selezionate) Quando ho utilizzato la versione completa rilasciata di 1.8.16 il problema è andato via.

+0

Grazie per l'imputazione! Mi assicurerò che sto usando la versione completa. –

8

Di seguito risolto questo problema per me (utilizzando jQuery 1.7.2/jQueryUI 1.8.20)

var $input = $('#date'); 

$input.datepicker({ 
    /* 
    * your other settings here 
    */ 
    onSelect : function() { $input.blur(); }, 
    onClose : function() { $input.change(); } 
}); 

$input.on('change paste', function(evt) { 
    // process new date input here 
}); 
+0

Si potrebbe anche usare '$ (this)' nelle funzioni di callback di 'onSelect' e' onClose'. –

+1

@koiyu, ma puoi chiamare di nuovo il costruttore jQuery per creare una nuova istanza per l'elemento di input. Più efficiente usare un'istanza memorizzata nella cache. –

1

Siamo di fronte lo stesso problema per jQuery UI 1.11.2. Il seguente frammento ha risolto il problema nel nostro caso:

var input = $('<input>'); 
 

 
input.datepicker({ 
 
    onSelect: function() { 
 
    this.lastShown = new Date().getTime(); 
 
    }, 
 
    beforeShow: function() { 
 
    var time = new Date().getTime(); 
 
    return this.lastShown === undefined || time - this.lastShown > 500; 
 
    } 
 
});