none
Problema para validar textbox CPF RRS feed

  • Pergunta

  • Boa noite galera, 

    É o seguinte tenho a pagina a seguir, nessa pagina tento fazer uma validação num textbox, esse textbox seria do CPF e eu formato esse campo com js, pra validar eu tento utilizar RequiredFieldValidator, CustomValidator e ValidatorCalloutExtender, porem não esta dando certo, se eu clicar no botão salvar sem passar nada nesse texbox ele fica na cor de fundo de erro que passo através do css, mas não mostra a mensagem, se eu passar um CPF invalido ele mostra a mensagem e a cor de fundo ficam certas

    <%@ Page Title="" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true"
        CodeBehind="CadastroAluno.aspx.cs" Inherits="EmpregabilidadeFAE.CadastroAluno" %>
    
    <%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="asp" %>
    <asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" runat="server">
    </asp:Content>
    <asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
        <script type="text/javascript">
            $(document).ready(function () {
                $("#MainContent_txtCPF").mask("999.999.999-99")
            });
        </script>
        <fieldset>
            <legend>Dados do Aluno</legend>
            <asp:Label ID="lblMsg" runat="server" Text="Campos marcados com * são campos obrigatórios"
                Font-Bold="True"></asp:Label>
            <br />
            <br />
            <asp:Label ID="lblNome" runat="server" Text="Nome do Aluno*"></asp:Label>
            <br />
            <asp:TextBox ID="txtNome" runat="server" Width="200px"></asp:TextBox>
            <asp:RequiredFieldValidator ID="validaTxtNome" runat="server" Display="None" ControlToValidate="txtNome"
                ErrorMessage="<b>Campo Obrigatório</b><br>Informe o Nome do Aluno" ForeColor="Red"
                Height="250px" />
            <asp:ValidatorCalloutExtender ID="NVal" runat="server" TargetControlID="validaTxtNome"
                HighlightCssClass="txtboxerror" />
            <br />
            <br />
            <asp:Label ID="lblRA" runat="server" Text="RA do Aluno*"></asp:Label>
            <br />
            <asp:TextBox ID="txtRA" runat="server" Width="200px"></asp:TextBox>
            <asp:RequiredFieldValidator ID="validaTxtRA" runat="server" Display="None" ControlToValidate="txtRA"
                ErrorMessage="<b>Campo Obrigatório</b><br>Informe o RA do Aluno" ForeColor="Red"
                Height="250px" />
            <asp:ValidatorCalloutExtender ID="RVal" runat="server" TargetControlID="validaTxtRA"
                HighlightCssClass="txtboxerror" />
            <br />
            <br />
            <asp:Label ID="lblCPF" runat="server" Text="CPF do Aluno*"></asp:Label>
            <br />
            <asp:TextBox ID="txtCPF" runat="server" Width="200px"></asp:TextBox>
            <asp:RequiredFieldValidator ID="validaTxtCPF" runat="server" Display="None" ControlToValidate="txtCPF"
                ErrorMessage="<b>Campo Obrigatório</b><br>Informe o CPF do Aluno" ForeColor="Red"
                Height="250px" />
            <asp:ValidatorCalloutExtender ID="CValiCPF" runat="server" TargetControlID="validaTxtCPF"
                HighlightCssClass="txtboxerror" />
            <asp:CustomValidator ID="CvalCPF" runat="server" ClientValidationFunction="valida_CPFCNPJ"
                ControlToValidate="txtCPF" Display="Dynamic" ForeColor="Red" SetFocusOnError="True"
                Font-Bold="True" ErrorMessage="CPF Inválido!"></asp:CustomValidator>
            <asp:ValidatorCalloutExtender ID="CVal" runat="server" TargetControlID="CvalCPF"
                HighlightCssClass="txtboxerror">
            </asp:ValidatorCalloutExtender>
            <br />
            <br />
            <asp:Button ID="btnSalvar" runat="server" Text="Salvar" />
        </fieldset>
    </asp:Content>
    Alguem que possa me ajudar


    sexta-feira, 5 de julho de 2013 00:36

Respostas

  • Boa noite Anderson,

    Para este caso você pode usar o RegularExpressionValidator em conjunto com o RequiredFieldValidator do ASP.NET.

    Aqui tem um exemplo de expressão regular para validação de CPF  ([0-9]+?)\\s([a-z]+)\\s([0-9]+?)\\s([A-Z]+?)\\s(.*$)

    Se a resposta for útil, não esqueça de marcar como resposta ;)

    Abraços

    sexta-feira, 5 de julho de 2013 00:52

Todas as Respostas

  • Boa noite Anderson,

    Para este caso você pode usar o RegularExpressionValidator em conjunto com o RequiredFieldValidator do ASP.NET.

    Aqui tem um exemplo de expressão regular para validação de CPF  ([0-9]+?)\\s([a-z]+)\\s([0-9]+?)\\s([A-Z]+?)\\s(.*$)

    Se a resposta for útil, não esqueça de marcar como resposta ;)

    Abraços

    sexta-feira, 5 de julho de 2013 00:52
  • Boa tarde, segue uma imagem de como fica os campos quando clico em salvar sem passar nada os textbox. Porem no CPF não consegui fazer.

     
    sexta-feira, 5 de julho de 2013 20:05
  • Olá Anderson,

    Vou deixar aqui um exemplo que fiz usando do CustomValidator com base estes dois tutorias, só configurar de acordo com seu contexto:

    http://coding.infoconex.com/post/ASPNET-CustomValidator-that-validates-multiple-controls-using-both-Server-Side-and-Client-Side-scripting.aspx
    http://silas.theducks.com.br/arquivos/validacao_formatacao_js.html

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication6._Default" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
        <script type="text/javascript">
    
            //http: //silas.theducks.com.br/arquivos/validacao_formatacao_js.html
    
            function validarCPF(source, args) {
                var cpf = document.getElementById('<%= txtCpf.ClientID %>').value ;
                var filtro = /^\d{3}.\d{3}.\d{3}-\d{2}$/i;
    
                if (!filtro.test(cpf)) {
                    args.IsValid = false;
                    return false;
                }
    
                cpf = remove(cpf, ".");
                cpf = remove(cpf, "-");
    
                if (cpf.length != 11 || cpf == "00000000000" || cpf == "11111111111" ||
    		        cpf == "22222222222" || cpf == "33333333333" || cpf == "44444444444" ||
    		        cpf == "55555555555" || cpf == "66666666666" || cpf == "77777777777" ||
    		        cpf == "88888888888" || cpf == "99999999999") {
                    args.IsValid = false;
                    return false;
                }
    
                soma = 0;
                for (i = 0; i < 9; i++) {
                    soma += parseInt(cpf.charAt(i)) * (10 - i);
                }
    
                resto = 11 - (soma % 11);
                if (resto == 10 || resto == 11) {
                    resto = 0;
                }
                if (resto != parseInt(cpf.charAt(9))) {
                    args.IsValid = false;
                    return false;
                }
    
                soma = 0;
                for (i = 0; i < 10; i++) {
                    soma += parseInt(cpf.charAt(i)) * (11 - i);
                }
                resto = 11 - (soma % 11);
                if (resto == 10 || resto == 11) {
                    resto = 0;
                }
    
                if (resto != parseInt(cpf.charAt(10))) {
                    args.IsValid = false;
                    return false;
                }
    
                return true;
            }
    
            function remove(str, sub) {
                i = str.indexOf(sub);
                r = "";
                if (i == -1) return str;
                {
                    r += str.substring(0, i) + remove(str.substring(i + sub.length), sub);
                }
    
                return r;
            }
    
            /**
            * MASCARA ( mascara(o,f) e execmascara() ) CRIADAS POR ELCIO LUIZ
            * elcio.com.br
            */
            function mascara(o, f) {
                v_obj = o
                v_fun = f
                setTimeout("execmascara()", 1)
            }
    
            function execmascara() {
                v_obj.value = v_fun(v_obj.value)
            }
    
            function cpf_mask(v) {
                v = v.replace(/\D/g, "")                 //Remove tudo o que não é dígito
                v = v.replace(/(\d{3})(\d)/, "$1.$2")    //Coloca ponto entre o terceiro e o quarto dígitos
                v = v.replace(/(\d{3})(\d)/, "$1.$2")    //Coloca ponto entre o setimo e o oitava dígitos
                v = v.replace(/(\d{3})(\d)/, "$1-$2")   //Coloca ponto entre o decimoprimeiro e o decimosegundo dígitos
                return v
            }
        </script>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            <asp:TextBox ID="txtCpf" runat="server" onkeypress="javascript: mascara(this, cpf_mask);"
                MaxLength="14"></asp:TextBox>
            <asp:CustomValidator ValidationGroup="abc" ClientValidationFunction="validarCPF" runat="server" ControlToValidate="txtCpf">CPF inválido. Tente novamente.</asp:CustomValidator>
            <br />
            <asp:Button Text="Validar" ValidationGroup="abc" runat="server" />
        </div>
        </form>
    </body>
    </html>


    Vitor Mendes | http://www.vitormendes.com.br/

    "Ajuda teu semelhante a levantar a sua carga, porém, não a carregá-la." (Pitágoras)


    • Editado Vitor Mendes sexta-feira, 5 de julho de 2013 20:24 Adicionando mais informações
    sexta-feira, 5 de julho de 2013 20:23
  • Olá Vitor, obrigado pela ajuda, consegui resolver o meu problema
    sábado, 6 de julho de 2013 17:31