Pergunta

Eu uso o JQuery Validation plugin de validar um formulário ( http://docs.jquery.com / Plugins / Validação / )

Por exemplo, eu posso validar um e-mail em um formulário.

O que eu gostaria de fazer é validar se o nome de usuário escolhido já existe. Então, eu preciso chamar um método servidor que consulta o banco de dados. Como posso fazer isso?

Atualização

De resposta balexandre, eu tente o seguinte:

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

Na resposta, eu escrevo um booleano (Verdadeiro ou Falso) em vez de 1 OU 0.

Eu sei que a minha função de validação é chamada. O problema é que é sempre mostrar a mensagem de erro mesmo se o usuário não existe. Eu tento colocar uma mensagem de alerta antes do retorno verdade para ver se ele de alcance, e é. Então eu não entendo, por que ele está não funciona ...

Foi útil?

Solução

bastante fácil e é uma thcnique bom que eu aplico muito sobre meus projetos

1 - criar uma página aspx chamado verifyUserAvailability.aspx com código-behind file

2 - excluir todas as linhas, exceto a primeira no arquivo aspx

3 - no código-behind arquivo dentro do Page_Load chamar evento seu banco de dados 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 - agora em sua página de formulário, crie um botão como

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

5 - criar o 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>

Outras dicas

Isso deve fazer o truque ...

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

ou ...

Um mostra Resposta Como chamar um serviço e o segundo mostra como chamar um método de página.

Chamando um método do lado do servidor ASP.NET via jQuery

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top