Ragazzi ho un problema con la funzione di validazione di un form.
Nel tag form ho inserito l'attributo onsubmit="return validate()" e mi sono costruita la mia bella funzione di validazione che è la seguente:
codice:
function validate() {
valido = true;
if ($("input[name='cbAddCat']").is(":checked")) {
if ($("input[name='nCategoria']").val().length == 0 ||
$("input[name='nCategoria']").val().length > 200) {
valido = false;
mess = "Il nome della categoria deve essere compreso tra 1 e 200 caratteri!";
} else {
valido = verificaEsistenza(1,$("input[name='nCategoria']").val());
if (!valido) {
alert("Sono nel caso in cui categoria è presente!");
mess = "Questa categoria è già presente nella base di dati";
}
}
if (!valido) {
gestioneErrori(1,"r","","");
gestioneErrori(1,"p",mess,"input[name='nCategoria']");
} else {
gestioneErrori(1,"r","","");
}
}
return (valido);
}
Come si può intuire dalla sintassi uso jquery per la gestione, in pratico controllo lo stato del checkbox e poi se la casella di testo è stata riempita correttamente (valore tra 1 e 200). Se la casella è stata riempita nella funzione verificaEsistenza(..) eseguo un controllo sulla base di dati per verificare se il valore è già presente!
La funzione sembra funzionare correttamente, insomma mi segna se la casella di testo è vuota con relativo messaggio (le varie chiamate a gestioneErrori servono proprio per stampare il messaggio di errore nella variabile "mess") piuttosto che, nel caso non sia vuota, se il valore inserito è già presente o meno nella base di dati!
Adesso viene il problema! In pratica se si verifica la prima situazione, insomma che la cesella è vuota, allora l'errore viene segnalato ed il form non viene inviato poiché valido è false!
Nel secondo caso invece, sebbene la funzione verificaEsistenza(..) ritorni false e l'errore venga correttamente segnalato il form viene inviato lo stesso!
Com'è possibile? Non riesco proprio a spiegarmelo sinceramente! Se "valido" non fosse FALSE allora non dovrebbe apparire il messaggio di errore settato proprio nell'if dopo la chiamata a verificaEsistenza(..) ma invece mi appare correttamente!
Solo che il form, anche se validate() ritorna FALSE viene comunque inviato in questo caso!
Qualche idea? Non so proprio da dove cominciare... purtroppo!
Saluti, Carlo.