Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Ola amigos!
Estou validando um campo de CNPJ em meu formulario, está funcionando, porém, aceita o formato 00.000.000/0000-00 e da como valida. Quero fazer com que não aceite esse formato. Deve ser simples porem ainda ando no inicio do desenvolvimento. Colocarei o codigo de validação para melhor me auxiliar. Aguardo auxilio de todos. Grato!
function validaCNPJ() {
CNPJ = document.validacao.CNPJID.value;
erro = new String;
if (CNPJ.length < 18) erro += "É necessario preencher corretamente o número do CNPJ! ";
if ((CNPJ.charAt(2) != ".") || (CNPJ.charAt(6) != ".") || (CNPJ.charAt(10) != "/") || (CNPJ.charAt(15) != "-")){
if (erro.length == 0) erro += "É necessário preencher corretamente o número do CNPJ! ";
}
//substituir os caracteres que não são números
if(document.layers && parseInt(navigator.appVersion) == 4){
x = CNPJ.substring(0,2);
x += CNPJ. substring (3,6);
x += CNPJ. substring (7,10);
x += CNPJ. substring (11,15);
x += CNPJ. substring (16,18);
CNPJ = x;
} else {
CNPJ = CNPJ. replace (".","");
CNPJ = CNPJ. replace (".","");
CNPJ = CNPJ. replace ("-","");
CNPJ = CNPJ. replace ("/","");
}
var nonNumbers = /\D/;
if (nonNumbers.test(CNPJ)) erro += "A verificação de CNPJ suporta apenas números! ";
var a = [];
var b = new Number;
var c = [6,5,4,3,2,9,8,7,6,5,4,3,2];
for (i=0; i<12; i++){
a[i] = CNPJ.charAt(i);
b += a[i] * c[i+1];
}
if ((x = b % 11) < 2) { a[12] = 0 } else { a[12] = 11-x }
b = 0;
for (y=0; y<13; y++) {
b += (a[y] * c[y]);
}
if ((x = b % 11) < 2) { a[13] = 0; } else { a[13] = 11-x; }
if ((CNPJ.charAt(12) != a[12]) || (CNPJ.charAt(13) != a[13])){
erro +="Digito verificador com problema!";
}
if (erro.length > 0){
alert(erro);
return false;
} else {
alert("CNPJ valido!");
}
return true;
}Amigo tente esse código:
function Valida_cnpj( $cnpj )
{
$cnpj = preg_replace( "@[./-]@", "", $cnpj );
if( strlen( $cnpj ) <> 14 or !is_numeric( $cnpj ) )
{
return false;
}
$k = 6;
$soma1 = "";
$soma2 = "";
for( $i = 0; $i < 13; $i++ )$k = $k == 1 ? 9 : $k;
$soma2 += ( $cnpj{$i} * $k );
$k--;
if($i < 12)$k = 9;
$soma1 += ( $cnpj{$i} * $k );
$k = 1;
}$soma1 += ( $cnpj{$i} * $k );
}
}
}
$digito1 = $soma1 % 11 < 2 ? 0 : 11 - $soma1 % 11;
$digito2 = $soma2 % 11 < 2 ? 0 : 11 - $soma2 % 11;
return ( $cnpj{12} == $digito1 and $cnpj{13} == $digito2 );
}e vai validar pra 11.111.111/1111-11, 22.222..... e assim por diante
Faça um teste pra ver se as strings não são iguais a nenhuma destas que rola tranquilo.
>
Amigo tente esse código:
function Valida_cnpj( $cnpj )
{
$cnpj = preg_replace( "@[./-]@", "", $cnpj );
if( strlen( $cnpj ) <> 14 or !is_numeric( $cnpj ) )
{
return false;
}
$k = 6;
$soma1 = "";
$soma2 = "";
for( $i = 0; $i < 13; $i++ )$k = $k == 1 ? 9 : $k;
$soma2 += ( $cnpj{$i} * $k );
$k--;
if($i < 12)$k = 9;
$soma1 += ( $cnpj{$i} * $k );
$k = 1;
}$soma1 += ( $cnpj{$i} * $k );
}
}
}
$digito1 = $soma1 % 11 < 2 ? 0 : 11 - $soma1 % 11;
$digito2 = $soma2 % 11 < 2 ? 0 : 11 - $soma2 % 11;
return ( $cnpj{12} == $digito1 and $cnpj{13} == $digito2 );
}
Amigo como posso chamar essa função no meu campo input do meu formulario? Pois no meu atual chamo através da ID CNPJID trecho codigo abaixo.
Meu form
<form action='cadastra1.php' method='post' enctype="multipart/form-data" onSubmit="return validaCNPJ();" name="validacao">
Meu input
<input name='CNPJID' type='text' class="Formulario" id="CNPJID" size=20 maxlength="18">
Amigo não leva a mal pois sou iniciante no desenvolvimento e tenho q arrumar algumas coisas no formulario do site onde trabalho. Grato!
ola Br_Legionario
acho que isso pode te ajudar. é uma mascara de formularios em JQUERY é bem fasil de usar, de oma olhada
t+
Movido:
Artigos, Tutoriais e Matérias (PHP) http://forum.imasters.com.br/public/style_emoticons/default/seta.gif Javascript