2010-02-03 7 views
6

Sto notando questo problema in IE 7 + 8jQuery UI datepicker IE ricaricare o salta alla parte superiore della pagina

$('#event-start-date').datepicker({dateFormat:'DD MM dd yy',minDate:'-0d'}); 

Quando si sceglie la data in IE 7 o 8 della pagina va a # e ricariche la pagina radice

sto usando jQuery 1.4.0 e 1.7.2 ui

+0

Sembra che il gestore dei clic non restituisca false. Ma mi aspetterei che ciò accada in tutti i browser, se così fosse. – prodigitalson

+0

L'aggiornamento alla versione 1.4.1 risolve il problema, poiché andava bene in 1.3.2 – matthewb

+0

Sembra che in 1.4.2 e 1.8.4 il problema sia ritornato (se è stato risolto). –

risposta

17

ho sperimentato lo stesso problema con jQuery 1.4.2 usando IE7. Questo mi capita solo quando utilizzo una finestra di dialogo modale. Il datepicker appare sulla pagina bene ma selezionando una data si viene reindirizzati al frammento #.

Ho trovato una correzione che è praticabile se non auspicabile qui: http://forum.jquery.com/topic/modal-dialog-with-datepicker

Fondamentalmente è solo strappare il href fuori dalla scatola di selezione:

.datepicker({ onSelect: function() { $(".ui-datepicker a").removeAttr("href"); } }); 

Oppure, se si utilizza il DatePicker su il contenuto che viene caricato in modo dinamico e ri-vincolante potrebbe essere necessario perdere la classe prima:

$("#your_text_box_id").removeClass('hasDatepicker').datepicker({ onSelect: function() { $(".ui-datepicker a").removeAttr("href"); } }); 

mi ci volle un po 'per trovare questo perché dei tanti altri problemi con jquery datepickers e IE, vai a capire.

+1

Grazie mille per questo! Vorrei che aggiungessero questo al codice di jQuery. –

+0

Questo mi ha salvato per il giorno. Grazie! – Stephen

+0

quindi bonus, buona ricerca –

1

Ho lo stesso problema con FF 3.6.13, Jquery 1.5.0 fornito da jquery CDN e jqueryui 1.8.9.

Estremamente strano, sta succedendo solo su alcuni computer con la stessa versione di Firefox, con le cache cancellate.

Questa correzione ha funzionato anche per me. cioè

$(".datepicker").datepicker({ 
    dateFormat: "yy-mm-dd", 
    changeMonth: true, 
    changeYear: true, 
    numberOfMonths: 2, 
    showButtonPanel: true, 
    onSelect: function() { 
    $(".ui-datepicker a").removeAttr("href"); 
    } 
}); 

L'unico problema è ora ignora l'evento .change. Ho risolto il problema aggiungendo $(this).change():

$(".datepicker").datepicker({ 
    dateFormat: "yy-mm-dd", 
    changeMonth: true, 
    changeYear: true, 
    numberOfMonths: 2, 
    showButtonPanel: true, 
    onSelect: function() { 
    $(".ui-datepicker a").removeAttr("href"); 
    $(this).change(); 
    } 
}); 

$(".date_unix").datepicker({ 
    dateFormat: "@", 
    changeMonth: true, 
    changeYear: true, 
    numberOfMonths: 2, 
    showButtonPanel: true, 
    onSelect: function() { 
    $(".ui-datepicker a").removeAttr("href"); 
    $(this).change(); 
    } 
}); 
+1

Con questa soluzione opzioni come 'minDate' e' maxDate' non vengono ignorate (in contrasto con l'altra risposta). – zuluk

Problemi correlati