6

Questo problema si riferisce a Internet Explorer 10, che è quello che sto testando su e non influenza le mie attuali versioni di Firefox or Chrome.orfani jQuery Datepicker ricomparire quando si naviga di nuovo alla pagina in IE10

Procedura per riprodurre in Internet Explorer

  1. Passare a: http://jqueryui.com/datepicker/
  2. Fare clic sul campo data per visualizzare il datepicker
  3. Mentre è aperto, passare a un'altra finestra dell'applicazione lungo il lato finestra IE quindi tornare a IE e fare clic su uno spazio vuoto vuoto nel pannello datepicker.
  4. Si dovrebbe vedere lo datepicker scomparire e quindi riapparire, che a mio avviso deve riguardare il fatto che il controllo che ha avuto l'ultima messa a fuoco, recupera l'attenzione quando si fa clic indietro.

Quello che ho notato:

  • Se si minimizza e massimizzare IE, non accade
  • Se si esegue la stessa procedura senza fare clic su di un'altra applicazione e cliccando direttamente in spazio bianco, non accade
  • esso funziona in modo coerente se si dispone di finestre/applicazioni fianco a fianco o su 2 monitor

Anche se posso accettare che si tratta di un problema minore e non sembra un bug, diventa più un problema nella nostra applicazione in cui lo datepicker viene visualizzato come parte di una finestra popup che scompare dopo aver fatto clic su esso.

Selezione data Con contenitore principale:

date picker with container

Orphaned Selezione data riapparire:

orphaned date picker

Quello che ho provato:

messaggi che ho visto relative alla visibilità del datepicker che suggeriscono il basso, che ho testato:

$("#my-datepicker-div").datepicker('destroy'); 
$("#my-datepicker-div").datepicker('disable'); 

Anche se sono contento di ignorare questo caso limite, è stata sollevata come un bug che devo aggiustare. Non sono sicuro di cos'altro provare.

risposta

4

sono stato in grado di risolvere in IE 10 (averlo aggiorna quindi chiudere, quindi ha un po 'di sfarfallio) chiamando:

$("#datepicker").datepicker("hide"); 

in una funzione che viene chiamata quando si chiude div (in questo esempio veloce fai clic sul lato div quando ritorni alla finestra).Esempio di violino qui: http://jsfiddle.net/anyuG/

Per riprodurre il comportamento descritto per IE 10 basta commentare quella riga nella funzione disablepopup() ed è possibile riprodurre la finestra di datapicker orfano. Se pubblichi il tuo esempio reale come un violino potremmo lavorare con quello.

afferrato l'esempio popup div qui: http://istockphp.com/jquery/creating-popup-div-with-jquery/

UPDATE

L'altro modo per gestire questa situazione, e guarda un po 'più bello è quello di rendere all'utente dei $(window).blur() e $(window).focus() funzioni. Questo sembra bene, a mio parere, notare la stretta in congedo finestra, e se si fa clic all'interno della scatola bianca riapre, e riaprire ma tutti vicini insieme, se si fa clic al di fuori della scatola bianca:

$(window).blur(function(e) { 
    $("#datepicker").datepicker("hide"); 
}); 

violino aggiornamento. Gioca con .focus() e per determinare la migliore combinazione per le tue preferenze, e dovresti essere bravo. Potrebbe anche voler rilevare solo IE 10 e solo eseguire questo codice se in quel browser.

Fiddle: http://jsfiddle.net/78252/1/

+0

Grazie per il violino, riproduce il problema in modo corretto quando la linea commentata. Mentre la tua soluzione chiude il datapicker, non sembra giusto averla di nuovo flash prima che si chiuda. – Tanner

+0

D'accordo, non sono sicuro di avere una soluzione migliore dato che lampeggia, perché sta dicendo qualcosa sul comportamento della pagina (l'ordine degli eventi). – Matthew

+0

Ci pensavo ancora un po '. Vedi risposta aggiornata. – Matthew

Problemi correlati