e ma tu volevi un controllo formale, non verificare che la data fosse esistente
Codice PHP:
/* per me il metodo migliore per accertarsi che la data sia plausibile, dopo aver superato un controllo formale, */
    
var validDate=false;
    var 
elDate=document.getElementById("data");
    if(
elDate.value.match(/\d{2}-\d{2}-\d{4}/)){
/* e':
- splittare il value per trattino, hai giorno mese e anno */
        
var arrDate=elDate.value.split('-');
/* - creare un nuovo oggetto date con questa data */
        
var date=new Date(arrDate[2],arrDate[1]-1,arrDate[0]);
/* - ricavare dall' oggetto date giorno mese e anno e compararli, se corrispondono la data e' plausibile */
        
if(date.getDate()==arrDate[0] && date.getMonth()==arrDate[1]-&& date.getFullYear()==arrDate[2]){
            
validDate=true;
        }
    }
/* se validDate e' ancora false richiama l' alert e ritorna false */
    
if(!validDate){
        
alert("The Departure Date type is wrong.");
        return 
false;
    } 
e' proprio buttato giu al volo ma dovrebbe essere corretto, prova