Pregunta

Utilizo el complemento de validación JQuery para validar un formulario ( http://docs.jquery.com / Plugins / Validación / )

Por ejemplo, puedo validar un correo electrónico en un formulario.

Lo que me gustaría hacer es validar si el nombre de usuario elegido ya existe. Entonces, necesito llamar a un método de servidor que consulte la base de datos. ¿Cómo puedo hacer eso?

ACTUALIZACIÓN

De la respuesta de balexandre, intento lo siguiente:

$.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                        
                        }
                    }
                }
            );
        }
    );

En la Respuesta, escribo un booleano (Verdadero de Falso) en lugar de 1 o 0.

Sé que mi función de validación es call. El problema es que siempre muestra el mensaje de error incluso si el usuario no existe. Intento poner un mensaje de alerta antes del retorno verdadero para ver si es alcance, y lo es. Entonces no entiendo, por qué no funciona ...

¿Fue útil?

Solución

bastante fácil y es una buena técnica que aplico mucho en mis proyectos

1: cree una página aspx llamada generateUserAvailability.aspx con un archivo de código subyacente

2 - eliminar todas las líneas excepto la primera en el archivo aspx

3: en el archivo de código subyacente dentro del evento Page_Load , llame a su base de datos como

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: ahora en su página de formulario, cree un botón como

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

5 - crea el método 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>

Otros consejos

Esto debería hacer el truco ...

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

O ...

Una respuesta muestra cómo llamar a un servicio & amp; el segundo muestra cómo llamar a un método de página.

Llamar a un método del lado del servidor ASP.NET a través de jQuery

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top