Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Raul Bismarck

[Resolvido] Apagar Input Text e onfocus (validação CPF onblur)

Recommended Posts

Boa noite.

 

Pesquisando alguns código na Internet, fiz algumas adaptações e criei um código de validação de CPF com onblur. Ou seja, quando o usuário digita o valor do Input Text e vai para outro campo , a função de validar CPF é chamada. Até aí tudo bem, está funcionando direitinho. Mas eu gostaria de melhorar este código e não consegui, pois tenho dificuldades com javascript.

 

Gostaria de adicionar ao código uma rotina,

se ele der a mensagem de CPF inválido (alert("CPF Inválido! Tente Novamente!"), automaticamente o valor do Input Text é apagado e o focus do mouse é direcionado novamente para o campo CPF, ou seja, ele volta para o campo CPF e apaga o valor incorreto, para que o usuário digite novamente.

 

Alguém pode me ajudar?

 

Segue o código abaixo:

 

function validarCPF( cpf ){
var filtro = /^\d{3}.\d{3}.\d{3}-\d{2}$/i;

if(!filtro.test(cpf))
{
	window.alert("CPF inválido. Tente novamente.");
               document.cpf.value='';
               document.cpf.focus();
	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")
{
	window.alert("CPF inválido. Tente novamente.");
	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))){
	window.alert("CPF inválido. Tente novamente.");
	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))){
	window.alert("CPF inválido. Tente novamente.");
	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
}


Compartilhar este post


Link para o post
Compartilhar em outros sites

adiciona sempre depois dos alerts de validação de cpf.

 

use seu javascript puro.

document.cpf.value='';
document.cpf.focus();

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não funcionou!

O código é pra ficar assim mesmo?

function validarCPF( cpf ){
var filtro = /^\d{3}.\d{3}.\d{3}-\d{2}$/i;

if(!filtro.test(cpf))
{
	window.alert("CPF inválido. Tente novamente.");
               document.cpf.value='';
               document.cpf.focus();
               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")
{
	window.alert("CPF inválido. Tente novamente.");
               document.cpf.value='';
               document.cpf.focus();
               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))){
	window.alert("CPF inválido. Tente novamente.");
               document.cpf.value='';
               document.cpf.focus();
               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))){
	window.alert("CPF inválido. Tente novamente.");
               document.cpf.value='';
               document.cpf.focus();
               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;
}
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
}

 

Mais alguém?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Perfeito. Deu certo aqui o nome do meu form é form. Muito obrigado!

 

function validarCPF( cpf ){
var filtro = /^\d{3}.\d{3}.\d{3}-\d{2}$/i;

if(!filtro.test(cpf))
{
	window.alert("CPF inválido. Tente novamente.");
               document.form.cpf.value = '';
               document.form.cpf.focus();
               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")
{
	window.alert("CPF inválido. Tente novamente.");
               document.form.cpf.value = '';
               document.form.cpf.focus();
               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))){
	window.alert("CPF inválido. Tente novamente.");
               document.form.cpf.value = '';
               document.form.cpf.focus();
               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))){
	window.alert("CPF inválido. Tente novamente.");
               document.form.cpf.value = '';
               document.form.cpf.focus();
               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;
}
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
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Raul ou Bruce, como faço chamar a função em meu formulario? Estou com o seguinte formulario

 

<form name="accessionform" id="accessionform" method="post" action="{//control[@type='lum_form']/data/action-commit}">
            <fieldset>
                <div class="row">
                    <div class="col-md-12">                                        
                                                               
                        <div class="form-group">
                            <label class="sr-only" for="subject">CPF<br /></label>
                            <div class="inner-addon left-addon">
                                <i class="fa fa-pencil"></i>
                                
                                <input type="text" class="form-control required" placeholder="CPF" name="cpf" id="cpf" required="" />
                                
                            </div>
                        </div>

                                       

                    </div>
                </div>                
                <div class="row actions">
                    <div class="col-sm-12 col-md-6">
                        <input type="submit" value="&#xf1d9; ${{lum_localize('STR_STAND_UP_FOR')}}" name="submit" id="submitButton" class="btn btn-default btn-primary-corp-big" title="${{lum_localize('STR_STAND_UP_FOR')}}" />
                    </div>
                   
                </div>
            </fieldset>
        </form>

Em 18/11/2012 at 23:08, Raul Bismarck disse:

Perfeito. Deu certo aqui o nome do meu form é form. Muito obrigado!

 

 


function validarCPF( cpf ){
var filtro = /^\d{3}.\d{3}.\d{3}-\d{2}$/i;

if(!filtro.test(cpf))
{
	window.alert("CPF inválido. Tente novamente.");
               document.form.cpf.value = '';
               document.form.cpf.focus();
               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")
{
	window.alert("CPF inválido. Tente novamente.");
               document.form.cpf.value = '';
               document.form.cpf.focus();
               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))){
	window.alert("CPF inválido. Tente novamente.");
               document.form.cpf.value = '';
               document.form.cpf.focus();
               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))){
	window.alert("CPF inválido. Tente novamente.");
               document.form.cpf.value = '';
               document.form.cpf.focus();
               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;
}
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
}

 

 

 

Raul, como você chama a função no formulario? tem como você postar o trecho?

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.