Ir para conteúdo

POWERED BY:

Arquivado

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

Hiltonmm

Problemas com FireFox

Recommended Posts

Boa tarde gente

meu problema é o seguinte

eu tenho uma função para verificar a validade do CPF essa função ta funcionando 100% no IE porem no FF ela só funciona 50%.

se alguem pudesse corrigir para mim ficarei eternamente grato.

 

no FF quando o cpf ta errado ele exibe o alert mas não da foco ao campo permitindo que o usuario submeta o formulario.

 

cpf.js

function validarCPF( cpf ){
	d = document.all;
	
	var filtro = /^\d{3}.\d{3}.\d{3}-\d{2}$/i;
	
	if(!filtro.test(cpf))
	{
		window.alert("CPF não é válido!");
		d.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 não é válido!");
		d.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 não é válido!");
		d.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 não é válido!");
   		d.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;
}

from.php

<script type="text/javascript" src="cpf.js"></script>
<form id="from" name="from" method="post" action="">
<input name="nome" type="text" id="nome" />
<input name="cpf" type="text" id="cpf" onblur="validarCPF();" size="14" maxlength="14"/>
<input type="submit" name="Submit" value="Salvar"/>
</from>

O problema que acontece é que no FF o campo cpf não fica em foco quado o cpf é invalido.

já no IE funciona 100%

 

O campo tambem possue uma mascara 999.999.999-99

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom... pra começar, tenta usar DOM para acessar os elementos:

 

function validarCPF( cpf ){
	var _CPF = document.getElementById("cpf");
	
	var filtro = /^\d{3}.\d{3}.\d{3}-\d{2}$/i;
	
	if(!filtro.test(cpf))
	{
		window.alert("CPF não é válido!");
		_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 não é válido!");
		_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 não é válido!");
		_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 não é válido!");
		   _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;
}

deve funcionar...

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.