In effetti lo script non funziona (di seguito spiego anche perchè), chissà quali infallibili browsers utilizza l'amico floyd
Nel tuo script ci sono diversi errori e imprecisioni, se utilizzi il formato aaaa/mm/gg, allora nella funzione isDate() devi cambiare gli indici nell'array spz, in questo caso infatti, l'anno sarà contenuto nell'indice 0 anziché nel 2, per il giorno devi fare esattamente il contrario (2 anziché 0).
Inoltre, non fai nessun controllo sul ritorno della funzione isDate()... che potrebbe essere false (errore)... e, infine, utilizzi diverse volte il method document.getElementById() senza che ce ne sia bisogno, infatti, hai già la variabile Qform che contien l'oggetto FORM... ecco lo script corretto:
Ciao.codice:function isDate(str) { // anno a 4 cifre !!! spz = str.split("/"); if (spz.length != 3) return(false); dat = new Date(spz[0], spz[1] - 1, spz[2]); if (dat.getFullYear() == parseFloat(spz[0]) && dat.getMonth() == (parseFloat(spz[1]) - 1) && dat.getDate() == parseFloat(spz[2])) return(dat); return(false); } function convalidaForm(Qform) { if ((data_1 = isDate(Qform.data_inizio.value)) == false) { alert("Inserire data inizio correttamente."); Qform.data_inizio.focus(); return(false); } if ((data_2 = isDate(Qform.data_fine.value)) == false) { alert("Inserire data fine correttamente."); Qform.data_fine.focus(); return(false); } if (data_2.getTime() <= data_1.getTime()) { alert("La data di fine non può essere uguale (o minore) alla data di inizio !"); Qform.data_fine.focus(); return(false); } // Abilita l'invio del FORM return(true); }