ho scoperto il problema ma non so come risolverlo.
l'onsubmit è scritto così:
onsubmit="return (verificadata() && checkForm(this));"
perchè mi fa la verifica anche della data che sia scritta in modo corretto
ecco lo script:
codice:<SCRIPT LANGUAGE="JAVASCRIPT"> function numerico(stringain) // la funzione si basa sull'utilizzo del metodo parseInt // di cui si riporta di seguito un esempio: // esempio : ParseInt(11) = 11 // esempio : ParseInt(11ss) = 11 // esempio : ParseInt(aaa) = NaN // Se il dato in input è un numero avremo lo stesso output da parseInt // mentre in caso di contenuto alfanumerico avremo NaN oppure la parte // numerica della stringa. L'esito della funzione sarà true se // input = output // per una maggiore precisione nel controllo ho preferito effettuare un // ciclo in modo da controllare ogni songolo carattere piuttosto che la stringa // intera { var stringaout; var carattere; for (i=0;i<stringain.length;i++) { carattere=stringain.charAt(i); if (parseInt(carattere)!=carattere) return false; } return true; } function verificadata() { var dataverifica; var dataoutput; var gginput; var mminput; var aaaainput; var ggoutput; var mmoutput; var aaaaoutput; var datainput=document.getElementById("data").value; // la prima cosa che si controlla è che la data sia stata effettivamente // immessa e che sia di 10 caratteri if (datainput=="") { alert ('Immettere una data'); return false; } else { return true; } if (datainput.length!=10) { alert ('La data deve essere in formato GG/MM/AAAA'); return false; } else { return true; } // vengono ricavati il l'anno, il mese ed il giorno dalla data in input gginput=datainput.substr(0,2); mminput=datainput.substr(3,2); aaaainput=datainput.substr(6,4); // tramite la funzione numerico viene verificato che il giorno, il mese // e l'anno immessi siano effettivamente in formato numerico if(!(numerico(gginput))) { alert ('Il giorno inserito non è in formato numerico'); return; } if(!(numerico(mminput))) { alert ('Il mese inserito non è in formato numerico'); return; } if(!(numerico(aaaainput))) { alert ('L`anno inserito non è in formato numerico'); return; } // viene utilizzato un oggetto data per la verifica costruendola in base // ai parametri ricavati in input (l'anno è sottratto di 1 perchè la funzione data // considera i mesi partendo da zero) dataverifica =new Date(aaaainput,mminput-1,gginput) // dalla data creata viene ricavato l'anno, il mese ed il giorno (il mese è incrementato // di 1 per restituire il mese nel formato standard) aaaaoutput=dataverifica.getFullYear().toString(); mmoutput=(dataverifica.getMonth()+1).toString(); ggoutput=dataverifica.getDate().toString(); // poichè le funzioni getMonth e getDate restituiscono valori numerici // occorre aggiungere lo zero per i mesi e gli anni unitari (es "1/1/2005") // il controllo è effettuato sulla lunghezza della stringa (se < 2 aggiungi lo zero) if (mmoutput.length<2) mmoutput="0"+mmoutput; if (ggoutput.length<2) ggoutput="0"+ggoutput; // La data in output è costituita dai dati ricavati precedentemente separati // dal carattere "/" dopo aver aggiunto dataoutput=ggoutput+"/"+mmoutput+"/"+aaaaoutput; // viene confrontata la data in input con quella in output // se non coincidono vuol dire che la data non è corretta if (datainput!=dataoutput) { alert('La data inserita non è corretta'); return false; } else { return true; } } </SCRIPT>

Rispondi quotando