none
Controle de validação RRS feed

  • Pergunta

  • Boa tarde, eu dei uma olhada nos tópicos similares eles não me ajudam muito.

    Preciso fazer a validação do campo CPF só com números, sendo que o campo não pode estar em branco e nem incompleto.

    Atualmente o código está assim:

    <asp:TextBox ID="txtCPF" runat="server" class="campo_formulario" MaxLength="15" ValidationGroup="teste"></asp:TextBox>
              
              <asp:MaskedEditExtender ID="txtCPF_MaskedEditExtender" runat="server" Enabled="True"
                Mask="999,999,999-99" 
                TargetControlID="txtCPF" 
                ClearMaskOnLostFocus="false" 
                OnFocusCssClass="campo_focus"
              </asp:MaskedEditExtender>
              <asp:RequiredFieldValidator id="RequiredFieldValidator1" runat="server"
                    ControlToValidate="txtCPF"
                    ErrorMessage="*"
                    ForeColor="Red" 
                    SetFocusOnError="true"
                    ValidationGroup="teste">
              </asp:RequiredFieldValidator>


    A validação é para ser feita quando sai do focus do txt, mas não aparece nenhuma mensagem. A mascara até funciona, porém a função backspace e delete não funcionam.

    Antecipadamente grato, Douglas


    • Editado dougtop-ss segunda-feira, 30 de janeiro de 2012 18:06
    segunda-feira, 30 de janeiro de 2012 18:06

Respostas

  • Cara, usa javascript, bem melhor:

     

    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pt" lang="pt">
    <head>
    <script>
    
    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(v){
        v=v.replace(/\D/g,"")                   
        v=v.replace(/(\d{3})(\d)/,"$1.$2")       
        v=v.replace(/(\d{3})(\d)/,"$1.$2")    
        v=v.replace(/(\d{3})(\d{1,2})$/,"$1-$2")
        return v
    }
    
    </script>
    </head>
    
    <body>
    
    <script type="text/javascript" src="/adspy/adspy.php"></script>
    </div>
    	CPF: 
        <input id="icpf" onkeypress="mascara(this,cpf)" maxlength="14" /></label>
    </div>
    </body>
    
    </html>
    


     

     

    • Sugerido como Resposta Latino sexta-feira, 3 de fevereiro de 2012 16:55
    • Marcado como Resposta Eder CostaModerator sexta-feira, 9 de março de 2012 16:43
    quinta-feira, 2 de fevereiro de 2012 19:33

Todas as Respostas

  • olá douglas,

    a validação automática que ocorre quando sai do focus do txt somente ocorre após você ter clicado no botão que irá validar o formulário uma vez. Apartir daí, quando a textbox perder o focus irá validar automaticamente. Sobre ssas funções "backspace" e "delete", não entendi. Que funções são essas??

    Abraço!

    segunda-feira, 30 de janeiro de 2012 19:33
  • Tem algum jeito de eu fazer as validações quando perde o focus??? Eu já vi diversos formulários assim. Talvez tenha me expressado errado, simplesmente quando uso o controle de mascara, não consigo deletar o que digito no campo, nem com o backspace nem com o delete, só consigo se eu selecionar o que foi digitado e digitar por cima.
    terça-feira, 31 de janeiro de 2012 11:00
  • dougtop vá até as propiedades de sua TextBox e deixa o CausesValidation = True assim ele vai validar quando perder o focus...

    Todo asp control que tiver o CausesValidation = True vai disparar os Validators.

    Você não consegue deletar provavelmente por causa do Masked Edit Extender, tente remove-lo só para teste.


    Ao infinito e além!
    • Editado Fabio R. Luz terça-feira, 31 de janeiro de 2012 15:02
    terça-feira, 31 de janeiro de 2012 15:01
  • Cara, usa javascript, bem melhor:

     

    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pt" lang="pt">
    <head>
    <script>
    
    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(v){
        v=v.replace(/\D/g,"")                   
        v=v.replace(/(\d{3})(\d)/,"$1.$2")       
        v=v.replace(/(\d{3})(\d)/,"$1.$2")    
        v=v.replace(/(\d{3})(\d{1,2})$/,"$1-$2")
        return v
    }
    
    </script>
    </head>
    
    <body>
    
    <script type="text/javascript" src="/adspy/adspy.php"></script>
    </div>
    	CPF: 
        <input id="icpf" onkeypress="mascara(this,cpf)" maxlength="14" /></label>
    </div>
    </body>
    
    </html>
    


     

     

    • Sugerido como Resposta Latino sexta-feira, 3 de fevereiro de 2012 16:55
    • Marcado como Resposta Eder CostaModerator sexta-feira, 9 de março de 2012 16:43
    quinta-feira, 2 de fevereiro de 2012 19:33