Domanda

Uso il plug-in di convalida JQuery per convalidare un modulo ( http://docs.jquery.com / Plugins / validazione / )

Ad esempio, posso convalidare un'email in un modulo.

Quello che vorrei fare è convalidare se il nome utente scelto esiste già. Quindi, ho bisogno di chiamare un metodo server che interroga il database. Come posso farlo?

UPDATE

Dalla risposta di balexandre, provo quanto segue:

$.validator.addMethod("userName", 
    function(value, element)
    {
        $.get
        (
            "CheckUser.aspx?User=" + value, 
            function(data) 
            {
                if (data == "True") 
                {
                    return false;
                }
                else if (data == "False") 
                {
                    return true;
                }
                else 
                {
                    alert(data);
                }
            }
        );
    },
    "User already exists");

    $(document).ready
    (
        function() 
        {
            $("#aspnetForm").validate
            (
                {
                    rules: 
                    {
                        <%=txtUserName.UniqueID %>: 
                        {
                            required: true,
                            email: true,
                            userName: true                        
                        }
                    }
                }
            );
        }
    );

Nella risposta, scrivo un valore booleano (True of False) anziché 1 o 0.

So che la mia funzione di validazione è call. Il problema è che mostra sempre il messaggio di errore anche se l'utente non esiste. Provo a mettere un messaggio di avviso prima del ritorno vero per vedere se è raggiungibile, e lo è. Quindi non capisco, perché non funziona ...

È stato utile?

Soluzione

abbastanza semplice ed è una bella tecnica che applico molto sui miei progetti

1 - crea una pagina aspx chiamata confirmUserAvailability.aspx con file code-behind

2: elimina tutte le righe tranne la prima nel file aspx

3 - nel file code-behind all'interno dell'evento Page_Load chiama il tuo database come

protected void Page_Load(object sender, EventArgs e) {
    string username = Request["usr"];
    int r = 0;

    if(!String.IsNullOrEmpty(username))
        if( yourDAL.getUserAvailability(username) )
            // your method would send true if user is available to be used
            r = 1;

   Response.Clear();
   Response.Write(r);
   Response.Flush();
}

4: ora nella pagina del modulo, crea un pulsante come

<input id="btnCheckAvailability" type="button" 
       value="Check availability" 
       onclick="javascript:checkAvailability();" />

5 - crea il metodo checkAvailability ()

<script type="text/language">

    function checkAvailability() {
        var $user = $("#UsernameInputBox");
        $.get("verifyUserAvailability.aspx?usr=" + $user.val(), function(data) {
            // this will call the page passing the username and return 1 or 0
            if( data == "1" ) 
                $user.css("background-color", "green");
            else 
                $user.css("background-color", "red");
        });
    }

</script>

Altri suggerimenti

Questo dovrebbe fare il trucco ...

http://riderdesign.com /articles/Check-username-availability-with-JQuery-and-ASP.NET.aspx

OPPURE ...

Una risposta mostra come chiamare un servizio & amp; il secondo mostra come chiamare un metodo di pagina.

Chiamare un metodo lato server ASP.NET tramite jQuery

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top