Usuário com melhor resposta
Problema para validar textbox CPF

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
- Editado Anderson Kurtz sexta-feira, 5 de julho de 2013 00:37
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
- Sugerido como Resposta Diego de Almeida Barreto (Lewis) sexta-feira, 5 de julho de 2013 01:28
- Marcado como Resposta Anderson Kurtz sexta-feira, 5 de julho de 2013 16:21
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
- Sugerido como Resposta Diego de Almeida Barreto (Lewis) sexta-feira, 5 de julho de 2013 01:28
- Marcado como Resposta Anderson Kurtz sexta-feira, 5 de julho de 2013 16:21
-
-
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
-