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.