Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Galera teu tenho script de validação de cpf e um separado de mascara de cpf também, mas teria algum fazendo a mesma coisa? um script só rodei nessa internet já um bucado antes de vim aqui questionar sobre isso, nada de qualidade achei.
Esse é os códigos.
De alguma forma eu penso que por causa dos pontos e - acrescentados devido a mascara o cpf não funciona pois tem esses implícitos. Lógico.
E eu estou ai perdido..
function validaCPF(cpf)
{
erro = new String;
if (cpf.value.length == 11)
{
var nonNumbers = /\D/;
if (nonNumbers.test(cpf.value))
{
erro = "A verificacao de CPF suporta apenas números!";
}
else
{
if (cpf.value == "00000000000" ||
cpf.value == "11111111111" ||
cpf.value == "22222222222" ||
cpf.value == "33333333333" ||
cpf.value == "44444444444" ||
cpf.value == "55555555555" ||
cpf.value == "66666666666" ||
cpf.value == "77777777777" ||
cpf.value == "88888888888" ||
cpf.value == "99999999999") {
erro = "Número de CPF inválido!"
}
var a = [];
var b = new Number;
var c = 11;
for (i=0; i<11; i++){
a[i] = cpf.value.charAt(i);
if (i < 9) b += (a[i] * --c);
}
if ((x = b % 11) < 2) { a[9] = 0 } else { a[9] = 11-x }
b = 0;
c = 11;
for (y=0; y<10; y++) b += (a[y] * c--);
if ((x = b % 11) < 2) { a[10] = 0; } else { a[10] = 11-x; }
if ((cpf.value.charAt(9) != a[9]) || (cpf.value.charAt(10) != a[10])) {
erro = "Número de CPF inválido.";
}
}
}
else
{
if(cpf.value.length == 0)
return false
else
erro = "Número de CPF inválido.";
}
if (erro.length > 0) {
alert(erro);
cpf.focus();
return false;
}
return true;
}
function maskCPF(CPF) {
var evt = window.event;
kcode=evt.keyCode;
if (kcode == 8) return;
if (CPF.value.length == 3) { CPF.value = CPF.value + '.'; }
if (CPF.value.length == 7) { CPF.value = CPF.value + '.'; }
if (CPF.value.length == 11) { CPF.value = CPF.value + '-'; }
}Então faz o seguinte, use o método .replace() da string, e remova tudo oque não for digito
antes de passar para a função de validação.
entendeu?
ai vai chegar a string do jeito que a função espera, com apenas numeros.
pesquise pelo método que indiquei, e sobre expressões regulares.
no caso da máscara, eu prefiro esta:
http://code.imasters.com.br/index.php?/topic/109-mascaras-enquanto-digita-er/
Tentarei aqui mano...
aproveitando..outra zinca..
tenho outra função pra validar números só que não estou conseguindo incrementa-la.
onKeyPress="return somenteNumeros(event,',.;');" // não ta funcionando.
function somenteNumeros(evnt,permitidos){
/****************************************************************************************
* Função para permitir somente digitação de número *
* sintaxe: somenteNumeros(event, [caracteres não numéricos permitidos]) *
* ex: onKeyPress="return somenteNumeros(event,',.;');" *
****************************************************************************************/
if (evnt.charCode == undefined){
var tecla = evnt.keyCode;
}else{
var tecla = evnt.charCode;
}
var teste = false;
if (permitidos != undefined && permitidos != ""){
if (permitidos.indexOf(String.fromCharCode(tecla)) != -1) teste = true;
}
if (clientNavigator == "IE"){
if (tecla < 48 || tecla > 57){
return teste;
}
}else{
if ((tecla < 48 || tecla > 57) && evnt.keyCode == 0){
return teste;
}
}
}
só lembrando que quero usar ela em por exemplo datas que estão com mascara dd/mm/aaaa e outras situações que podem conter . e - ou espaço.
if (cpf.value.length == 14)
{
cpf.value = cpf.value.replace('.', '');
cpf.value = cpf.value.replace('.', '');
cpf.value = cpf.value.replace('-', '');
var nonNumbers = /\D/;
algo assim?
problema é que agora ok funciona, mas se vai pra outro input preencher ele volta ficar sem os . e - e logo na pagina de impressão teria que ter também. =\
cara não mande o valor sem a formatação pro input.
apenas faça isso dentro da função de validação, só isso.
pense um pouco.
Está tão complicado pensar, essa m***** desse trabalho estava tão funcional ai inventam tanta coisa e pra cima da hora. Meu nível de conhecimento não é tudo isso ainda, só quero terminar e entregar se não fosse a urgência estaria buscando certo, mas na necessidade de entrega me obriga a isso.
cara, eu penso assim:
'uma coisa é uma coisa, e outra coisa é outra coisa'.
se você não pensar assim em programação, terá um amontoado de código que tenta fazer tudo, e então você vai fatalmente se perder no teu proprio código.
é possível: aplicar uma máscara e validar
mas não é necessário que seja o mesmo script.