Validare le date con javascript
Posted by Dibi Store Mon, 17 Sep 2007 08:32:00 GMT
Oggi stavo cercando una soluzione efficace per validare l'immissione di date in un form. La data doveva essere scritta nel formato gg/mm/yyyy e il cliente avrebbe preferito che non si potesse ad esempio inserire una data nel formato: 30/02/2007, dove, come si sà, il 30 Febbraio non esiste.
La soluzione che vi riporto qui, è comoda e flessibile, e può essere facilmente adattata alle vostre esigenze. Gli eventuali ringraziamenti vanno fatti a Woosta, un membro di ##javascript, il canale IRC nella rete freenode.
Questo è il codice che vi suggerisco di usare per validare le vostre date:
function valiDate(f){
var dmy = f.split(/\//);
var td = new Date( dmy[2], dmy[1]-1, dmy[0] );
var result = (td.getFullYear() == parseInt(dmy[2],10) && td.getMonth() == parseInt(dmy[1]-1,10) && td.getDate() == parseInt(dmy[0],10));
if (result == false) {
alert('Data non valida');
}
return result;
}
<form onSubmit="return valiDate(this.elements['date'].value)" action="">
Iniziamo con ordine: la funzione ipotizza che nel nostro form ci sia un campo con name impostato a 'date', da qui prenderà il valore e lo restituisce alla variabile dmy.
Successivamente viene creata una nuova data (notare che per far partire i mesi da 0 è stato necessario scrivere dmy[1]-1).
Infine viene confrontata la data, inserito una condizione che ci avvisa se la data è sbagliata, e ritornato il valore al form: se la data è corretta, il form viene inviato, altrimenti si riceve un avviso che la data è scorretta.

