Alguém me ajuda, eu tenho um formulario que, se o cara marcar CPF, o campo de texto valida conforme o CPF, se ele marca CNPJ, o campo texte valida conforme CNPJ.
O que que esta acontecendo… Ele so pega o valor do RadioBox como CPF, mesmo que esteja marcado o CNPJ.
Vou colocar os codigos aqui, ve se alguem pode me ajudar:
Formulario:
[code]
Segue a funcao verificaCampo:
[code]
function verificaCampo(num){
if(!document.getElementById('num_doc').value == ""){
if(document.getElementById('tipoDoc').value == "CPF"){
var numeros, digitos, soma, i, resultado, digitos_iguais, cpfdigitos;
cpfdigitos = num.value.replace(".","");
cpfdigitos = cpfdigitos.replace(".","");
cpfdigitos = cpfdigitos.replace("-","");
digitos_iguais = 1;
if (cpfdigitos.length < 11){
alert('CPF inválido');
document.getElementById('num_doc').focus();
return;
}
for (i = 0; i < cpfdigitos.length - 1; i++)
if (cpfdigitos.charAt(i) != cpfdigitos.charAt(i + 1))
{
digitos_iguais = 0;
break;
}
if (!digitos_iguais){
numeros = cpfdigitos.substring(0,9);
digitos = cpfdigitos.substring(9);
soma = 0;
for (i = 10; i > 1; i--)
soma += numeros.charAt(10 - i) * i;
resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
if (resultado != digitos.charAt(0)){
alert('CPF inválido');
document.getElementById('num_doc').focus();
return;
}
numeros = cpfdigitos.substring(0,10);
soma = 0;
for (i = 11; i > 1; i--)
soma += numeros.charAt(11 - i) * i;
resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
if (resultado != digitos.charAt(1))
return false;
return true;
}
else
return false;
}
if(document.getElementById('tipoDoc').value == "CNPJ"){
var numeros, digitos, cnpj, soma, i, resultado, pos, tamanho, digitos_iguais;
digitos_iguais = 1;
cnpj = num;
alert(cnpj);
if (cnpj.length < 14 && cnpj.length < 15){
alert('CNPJ inválido');
document.getElementById('num_doc').focus();
return;
}
for (i = 0; i < cnpj.length - 1; i++)
if (cnpj.charAt(i) != cnpj.charAt(i + 1))
{
digitos_iguais = 0;
break;
}
if (!digitos_iguais)
{
tamanho = cnpj.length - 2
numeros = cnpj.substring(0,tamanho);
digitos = cnpj.substring(tamanho);
soma = 0;
pos = tamanho - 7;
for (i = tamanho; i >= 1; i--)
{
soma += numeros.charAt(tamanho - i) * pos--;
if (pos < 2)
pos = 9;
}
resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
if (resultado != digitos.charAt(0))
return false;
tamanho = tamanho + 1;
numeros = cnpj.substring(0,tamanho);
soma = 0;
pos = tamanho - 7;
for (i = tamanho; i >= 1; i--)
{
soma += numeros.charAt(tamanho - i) * pos--;
if (pos < 2)
pos = 9;
}
resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
if (resultado != digitos.charAt(1)){
alert('CPF inválido');
document.getElementById('num_doc').focus();
return;
}
return true;
}
else
return false;
}
}
}[/code]
Quando eu coloco o alert pra testa o valor da radio, mesmo marcando CNPJ, diz que o valor é CPF.
Valeu