Ir para conteúdo
Fórum Script Brasil
  • 0

Validar Ao Sair Do Campo


sorocabaunderground

Pergunta

eu tenho um script para validar CPF

esta tudo funcionando + eu não quero ter que atualizar a pagina novamente para ele verificar se o CPF é Valido

queria que ele verificase logo apos o cara preencher o campo de CPF

aí se for invalido aparece um * na frente do campo =)

meu codigo

<?

//VERIFICA SE O FORMULÁRIO FOI ENVIADO

if($_POST["verOK"]) {

//RECEBE OS DADOS DO FORMULÁRIO

$cpf = $_POST["cpf"];

//VERIFICA SE O QUE FOI INFORMADO É NÚMERO

if(!is_numeric($cpf)) {

$status = false;

}

else {

//VERIFICA

if( ($cpf == '11111111111') || ($cpf == '22222222222') ||

($cpf == '33333333333') || ($cpf == '44444444444') ||

($cpf == '55555555555') || ($cpf == '66666666666') ||

($cpf == '77777777777') || ($cpf == '88888888888') ||

($cpf == '99999999999') || ($cpf == '00000000000') ) {

$status = false;

}

else {

//PEGA O DIGITO VERIFIACADOR

$dv_informado = substr($cpf, 9,2);

for($i=0; $i<=8; $i++) {

$digito[$i] = substr($cpf, $i,1);

}

//CALCULA O VALOR DO 10º DIGITO DE VERIFICAÇÂO

$posicao = 10;

$soma = 0;

for($i=0; $i<=8; $i++) {

$soma = $soma + $digito[$i] * $posicao;

$posicao = $posicao - 1;

}

$digito[9] = $soma % 11;

if($digito[9] < 2) {

$digito[9] = 0;

}

else {

$digito[9] = 11 - $digito[9];

}

//CALCULA O VALOR DO 11º DIGITO DE VERIFICAÇÃO

$posicao = 11;

$soma = 0;

for ($i=0; $i<=9; $i++) {

$soma = $soma + $digito[$i] * $posicao;

$posicao = $posicao - 1;

}

$digito[10] = $soma % 11;

if ($digito[10] < 2) {

$digito[10] = 0;

}

else {

$digito[10] = 11 - $digito[10];

}

//VERIFICA SE O DV CALCULADO É IGUAL AO INFORMADO

$dv = $digito[9] * 10 + $digito[10];

if ($dv != $dv_informado) {

$status = false;

}

else

$status = true;

}//FECHA ELSE

}//FECHA ELSE(is_numeric)

}//FECHA IF($_POST)

?>

Link para o comentário
Compartilhar em outros sites

9 respostass a esta questão

Posts Recomendados

  • 0

olha cara... se pode colocar assim do lado do campo quando ele for igual...

<script>document.write ("*");</script>

tenta isso cara..se não der certo se fala...

echo "<script>document.write ("*");</script>"

Link para o comentário
Compartilhar em outros sites

  • 0

essa parte do * tudo bem

+ esse codigo eu so consigo fazer ele rodar se eu "rodar" o meu formulario

+ eu ainda não quero enviar ele

eu quero tipo

o cara digita o CPF e vai preencher outro campo do formulario

aí se o CPF for invalido ele avisa =P

Link para o comentário
Compartilhar em outros sites

  • 0

Pelo que entendi você quer um exemplo que nem o forum, tipo quando você se cadastra no forum você coloca o seu email, dai no lado do campo aparece um acerto da cor verde, se o email não estiver igual da uma certo com a cor vermelha...

Link para o comentário
Compartilhar em outros sites

  • 0

Faça isso:

<input type=text name=CPF onBlur="this.form.submit()">

Acho que é isso que você precisa.

Assim vai enviar o formulário sempre que tirar o fóco do campo. E naõ vai dar muito certo :)

Eu colocaria um iframe oculto, e faria abrir uma página para testar se o cpf é válido ou não, e quando modificasse o campo, fazer abrir a página de teste com o valor do campo CPF na query, e depois de avaliar, se não for válido o iframe escreveria numa tag <span> antes do campo o * e faria uma váriavel CPF_teste (por exemplo) com valor false. E se for válido, faria a variavel com o valor true.

E no onsubmit do formulário, faria testar todos os campos com JS, e se a variavel CPF_teste for true, então significa que está certo não? Senão ele, a página se focaliza no campo CPF, e alertaria que o CPF é inválido.

Entendeu? :P

Link para o comentário
Compartilhar em outros sites

  • 0

olha um exemplo do que eu estou falando:

<?php
$acao=$_GET['acao'];
if($acao=="enviar"){
    echo "Enviado com sucesso";
    exit;
}
elseif($acao=="cpf"){
    $CPF=$_GET['cpf'];
    if($CPF=="123.123"){
        ?>
        <script>
        <!--
        window.top.CPF_span.innerHTML="";
        window.top.CPF_teste=true;
        //-->
        </script>
        <?php
        exit;
    }
    else{
        ?>
        <script>
        <!--
        window.top.CPF_span.innerHTML="<font color=\"#FF0000\"><b>*</b></font>";
        window.top.CPF_teste=false;
        //-->
        </script>
        <?php
        exit;
    }
}
else{
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title></title>
<script>
<!--
var CPF_teste;
//-->
</script>
</head>
<body>
<iframe id="iframe_invisivel" name="iframe_invisivel" style="display: none;"></iframe>
<form name="exemplo" action="<?php echo $PHP_SELF; ?>?acao=enviar" method="POST" onsubmit="if(!CPF_teste){exemplo.CPF.focus();alert('CPF inválido!'); return false;}else{return true;}">
CPF: <span id="CPF_span"></span> <input type="text" name="CPF" onchange="window.open('<?php echo $PHP_SELF; ?>?acao=cpf&cpf='+escape(this.value),'iframe_invisivel');"><br>
<input type="submit" value="Enviar">
</form>

</body>
</html>
<? }?>

PS: como eu não sei validar cpf, no exemplo, só aceita como cpf 123.123 :P

Link para o comentário
Compartilhar em outros sites

  • 0

Mano, é bem mais fácil fazer usando JavaScript

Para colocar a mensagem do lado você usaria <span id="validaCPF"></span> Depois usaria o document.getElementById("validaCPF") e mais umas coisas para aparecer a mensagem, mas esse é o modo como eu faço.

Vai de você

Link para o comentário
Compartilhar em outros sites

  • 0

Dá uma olhada

<html>

<head>

<title></title>

<script>

function teste( valor ){

var bloco = document.getElementById( "valida" );

if( valor == "" ){

bloco.innerHTML = "Erro encontrado";

document.t.nome.focus();

}else{

bloco.innerHTML = "Dados Ok";

}

}

</script>

</head>

<body>

<form name="t">

<input type="text" name="nome" onBlur="java script:teste( this.value );">

&nbsp; <span id="valida"></span>

</form>

</body>

</html>

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...