Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    Problema con funzione di validazione!

    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.

  2. #2
    Ragazzi credo di avere trovato il problema, questo:
    codice:
    function verificaEsistenza(tipologia,nome) {
        if (tipologia == 1) {
            $.post("./service.php", { nome_categoria: nome }, function(idCat) {
                if (idCat != "") {
                    return (false);
                } else {
                    return (true);
                }
            });
        } else {
            $.post("./service.php", { nome_sub_categoria: nome }, function(idSubCat) {
                if (idSubCat != "") {
                    return (false);
                } else {
                    return (true);
                }
            });
        }
    }
    Il risultato è undefined di questa funzione, non FALSE, ma comunque entra nell'if con (!valido) e non capisco perché e quindi mi fregava!

    C'è modo di far tornare un valore da una jquery.post oppure jquery.ajax? Ho cercato nelle API ma non ci ho trovato niente di utile, qualche suggerimento? Inteso anche come link va benissimo! Ho visto un po su google ma non ci ho capito molto purtroppo....

    Saluti, Carlo.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.