Ir para conteúdo

POWERED BY:

Arquivado

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

shumi

cpf

Recommended Posts

Pessoal como que eu adapto essa função?

Tipo eu achei ela, mas o exemplo o desenvolvedor colocou um campo radio e você escolhia se queria consultar CPF ou CNPJ.

Como que faço para fazer direto, o user digita o CPF e já verifica se é verdadeiro ou falso?

Teria que ser nesse formato 999.999.999-99

 

var NUM_DIGITOS_CPF  = 11;var NUM_DIGITOS_CNPJ = 14;var NUM_DGT_CNPJ_BASE = 8;/** * Adiciona método lpad() à classe String. * Preenche a String à esquerda com o caractere fornecido, * até que ela atinja o tamanho especificado. */String.prototype.lpad = function(pSize, pCharPad){	var str = this;	var dif = pSize - str.length;	var ch = String(pCharPad).charAt(0);	for (; dif>0; dif--) str = ch + str;	return (str);} //String.lpad/** * Adiciona método trim() à classe String. * Elimina brancos no início e fim da String. */String.prototype.trim = function(){	return this.replace(/^\s*/, "").replace(/\s*$/, "");} //String.trim/** * Elimina caracteres de formatação e zeros à esquerda da string * de número fornecida. * @param String pNum *	  String de número fornecida para ser desformatada. * @return String de número desformatada. */function unformatNumber(pNum){	return String(pNum).replace(/\D/g, "").replace(/^0+/, "");} //unformatNumber/** * Formata a string fornecida como CNPJ ou CPF, adicionando zeros * à esquerda se necessário e caracteres separadores, conforme solicitado. * @param String pCpfCnpj *	  String fornecida para ser formatada. * @param boolean pUseSepar *	  Indica se devem ser usados caracteres separadores (. - /). * @param boolean pIsCnpj *	  Indica se a string fornecida é um CNPJ. *	  Caso contrário, é CPF. Default = false (CPF). * @return String de CPF ou CNPJ devidamente formatada. */function formatCpfCnpj(pCpfCnpj, pUseSepar, pIsCnpj){	if (pIsCnpj==null) pIsCnpj = false;	if (pUseSepar==null) pUseSepar = true;	var maxDigitos = pIsCnpj? NUM_DIGITOS_CNPJ: NUM_DIGITOS_CPF;	var numero = unformatNumber(pCpfCnpj);	numero = numero.lpad(maxDigitos, '0');	if (!pUseSepar) return numero;	if (pIsCnpj)	{		reCnpj = /(\d{2})(\d{3})(\d{3})(\d{4})(\d{2})$/;		numero = numero.replace(reCnpj, "$1.$2.$3/$4-$5");	}	else	{		reCpf  = /(\d{3})(\d{3})(\d{3})(\d{2})$/;		numero = numero.replace(reCpf, "$1.$2.$3-$4");	}	return numero;} //formatCpfCnpj/** * Calcula os 2 dígitos verificadores para o número-efetivo pEfetivo de * CNPJ (12 dígitos) ou CPF (9 dígitos) fornecido. pIsCnpj é booleano e * informa se o número-efetivo fornecido é CNPJ (default = false). * @param String pEfetivo *	  String do número-efetivo (SEM dígitos verificadores) de CNPJ ou CPF. * @param boolean pIsCnpj *	  Indica se a string fornecida é de um CNPJ. *	  Caso contrário, é CPF. Default = false (CPF). * @return String com os dois dígitos verificadores. */function dvCpfCnpj(pEfetivo, pIsCnpj){	if (pIsCnpj==null) pIsCnpj = false;	var i, j, k, soma, dv;	var cicloPeso = pIsCnpj? NUM_DGT_CNPJ_BASE: NUM_DIGITOS_CPF;	var maxDigitos = pIsCnpj? NUM_DIGITOS_CNPJ: NUM_DIGITOS_CPF;	var calculado = formatCpfCnpj(pEfetivo, false, pIsCnpj);	calculado = calculado.substring(2, maxDigitos);	var result = "";	for (j = 1; j <= 2; j++)	{		k = 2;		soma = 0;		for (i = calculado.length-1; i >= 0; i--)		{			soma += (calculado.charAt(i) - '0') * k;			k = (k-1) % cicloPeso + 2;		}		dv = 11 - soma % 11;		if (dv > 9) dv = 0;		calculado += dv;		result += dv	}	return result;} //dvCpfCnpj/** * Testa se a String pCpf fornecida é um CPF válido. * Qualquer formatação que não seja algarismos é desconsiderada. * @param String pCpf *	  String fornecida para ser testada. * @return <code>true</code> se a String fornecida for um CPF válido. */function isCpf(pCpf){	var numero = formatCpfCnpj(pCpf, false, false);	var base = numero.substring(0, numero.length - 2);	var digitos = dvCpfCnpj(base, false);	var algUnico, i;	// Valida dígitos verificadores	if (numero != base + digitos) return false;	/* Não serão considerados válidos os seguintes CPF:	 * 000.000.000-00, 111.111.111-11, 222.222.222-22, 333.333.333-33, 444.444.444-44,	 * 555.555.555-55, 666.666.666-66, 777.777.777-77, 888.888.888-88, 999.999.999-99.	 */	algUnico = true;	for (i=1; i<NUM_DIGITOS_CPF; i++)	{		algUnico = algUnico && (numero.charAt(i-1) == numero.charAt(i));	}	return (!algUnico);} //isCpf/** * Testa se a String pCnpj fornecida é um CNPJ válido. * Qualquer formatação que não seja algarismos é desconsiderada. * @param String pCnpj *	  String fornecida para ser testada. * @return <code>true</code> se a String fornecida for um CNPJ válido. */function isCnpj(pCnpj){	var numero = formatCpfCnpj(pCnpj, false, true);	var base = numero.substring(0, NUM_DGT_CNPJ_BASE);	var ordem = numero.substring(NUM_DGT_CNPJ_BASE, 12);	var digitos = dvCpfCnpj(base + ordem, true);	var algUnico;	// Valida dígitos verificadores	if (numero != base + ordem + digitos) return false;	/* Não serão considerados válidos os CNPJ com os seguintes números BÁSICOS:	 * 11.111.111, 22.222.222, 33.333.333, 44.444.444, 55.555.555,	 * 66.666.666, 77.777.777, 88.888.888, 99.999.999.	 */	algUnico = numero.charAt(0) != '0';	for (i=1; i<NUM_DGT_CNPJ_BASE; i++)	{		algUnico = algUnico && (numero.charAt(i-1) == numero.charAt(i));	}	if (algUnico) return false;	/* Não será considerado válido CNPJ com número de ORDEM igual a 0000.	 * Não será considerado válido CNPJ com número de ORDEM maior do que 0300	 * e com as três primeiras posições do número BÁSICO com 000 (zeros).	 * Esta crítica não será feita quando o no BÁSICO do CNPJ for igual a 00.000.000.	 */	if (ordem == "0000") return false;	return (base == "00000000"		|| parseInt(ordem, 10) <= 300 || base.substring(0, 3) != "000");} //isCnpj/** * Testa se a String pCpfCnpj fornecida é um CPF ou CNPJ válido. * Se a String tiver uma quantidade de dígitos igual ou inferior * a 11, valida como CPF. Se for maior que 11, valida como CNPJ. * Qualquer formatação que não seja algarismos é desconsiderada. * @param String pCpfCnpj *	  String fornecida para ser testada. * @return <code>true</code> se a String fornecida for um CPF ou CNPJ válido. */function isCpfCnpj(pCpfCnpj){	var numero = pCpfCnpj.replace(/\D/g, "");	if (numero.length > NUM_DIGITOS_CPF)		return isCnpj(pCpfCnpj)	else		return isCpf(pCpfCnpj);} //isCpfCnpj

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então eu inseri assim:

<script language="Javascript">function cpfcnpj(){//testo o tamanho do campo e quando atingir três caracteres coloco o ponto.if(document.a.b.value.length == 3){//para exemplo dei nome para o form de a e pro campo de b, o que pode ser mudado.document.a.b.value = document.a.b.value + '.';return false;}//agora testo ao sétimo digito que é onde vai o segundo ponto na mascara para o cpf.if(document.a.b.value.length == 7){document.a.b.value = document.a.b.value + '.';return false;}//e final mente o traço do digito verificadorif(document.a.b.value.length == 11){document.a.b.value = document.a.b.value + '-';return false;}//agora é que fico sabendo se o campo é um cnpj, se tiver 15 caracteres pego todos eles pra dentro de variáveis, sei que da pra fazer com um array mas assim fica fácil da galera entender.if(document.a.b.value.length == 15){//aqui uso charAt(0) que me retorna um caracter especifico, assim posso pegar apenas os números do cpf e não os pontos e o traço.p0=document.a.b.value.charAt(0);p1=document.a.b.value.charAt(1);p2=document.a.b.value.charAt(2);p3=document.a.b.value.charAt(4);p4=document.a.b.value.charAt(5);p5=document.a.b.value.charAt(6);p6=document.a.b.value.charAt(8);p7=document.a.b.value.charAt(9);p8=document.a.b.value.charAt(10);p9=document.a.b.value.charAt(12);p10=document.a.b.value.charAt(13);p11=document.a.b.value.charAt(14);//limpo o campo pra depois colocar o cnpj.document.a.b.value = '';//e faço uma concatenação das variáveisdocument.a.b.value = p0 + p1 + '.' + p2 + p3 + p4 + '.' + p5 + p6 + p7 + '/' + p8 + p9 + p10 + p11 + '-';return false;}}</script>

uso:

<input name="cpf" type="text" id="cpfID" size="12" onKeyPress="return txtBoxFormat(this.form, this.name, '999.999.999-99', event);" onKeyUp="return autoTab(this, 14, event);" onBlur="ProcurarCompativel(event);" onkeyup="cpfcnpf(this)">

E não rolou!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim e como eu coloco a regra para só aceitar CPF válido???

Compartilhar este post


Link para o post
Compartilhar em outros sites

Essa função é pra colocar a mascara só neh?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui!

Mas como eu eu faço para ele ler os pontos e o traço???

Eu fiz assim:

 

<html><head><title>Teste</Title><script language="Javascript">function validaCPF() {cpf = document.validacao.cpfID.value;erro = new String;if (cpf.length < 11) erro += "Sao necessarios 11 digitos para verificacao do CPF! \n\n"; var nonNumbers = /\D/;if (nonNumbers.test(cpf)) erro += "A verificacao de CPF suporta apenas numeros! \n\n"; if (cpf == "00000000000" || cpf == "11111111111" || cpf == "22222222222" || cpf == "33333333333" || cpf == "44444444444" || cpf == "55555555555" || cpf == "66666666666" || cpf == "77777777777" || cpf == "88888888888" || cpf == "99999999999"){erro += "Numero de CPF invalido!"}var a = [];var b = new Number;var c = 11;for (i=0; i<11; i++){a[i] = cpf.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.charAt(9) != a[9]) || (cpf.charAt(10) != a[10])){erro +="Digito verificador com problema!";}if (erro.length > 0){alert(erro);return false;}return true;}</script></head><body><form action="validaCPF.htm" name="validacao" onSubmit="return validaCPF()">		<input type="text" name="cpfID" id="cpfID" maxlength="11" value="">	   <input name="Submit" type="submit" value="enviar"> </form></body></html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Adriano tem como você me ajudar fazer a regra do cpf com a mascara tb?Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tô tentando....

Ok beleza!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Adriano!

Cara eu fiz assim:

 

no head

function js_validateCPF(textVal){ var pattern1; var pattern2; var pattern3; var result1; var result2; var result3;   pattern3 = /^(\d|[\.\/\-\s]){11,14}$/;pattern2 = /^0{9}|1{9}|2{9}|3{9}|4{9}|5{9}|6{9}|7{9}|8{9}|9{9}/;//result1 = textVal.match(pattern1);result2 = textVal.match(pattern2);result3= textVal.match(pattern3); if (result2 ){	return false;			}else if( result3 ){	 textVal = js_trimPreCPF(textVal);   var len = textVal.length; if (textVal.length == 11) {	var last2digits = textVal.substring(textVal.length-2,textVal.length);  var baseCPF = textVal.substring(0,9);  var blnCheckSum = js_checkSum(baseCPF,last2digits);  if (blnCheckSum){   return true;  } else {	open_window('pop_erro.asp?Msg=-39');   return false;  } } else { open_window('pop_erro.asp?Msg=-39');  return false; }}else{ open_window('pop_erro.asp?Msg=-39'); return false;}}function js_checkSum(baseCPF,checkSumDigits){var checkSumDigit1 = checkSumDigits.charAt(0);var checkSumDigit2 = checkSumDigits.charAt(1);var checkSumDigit1_shouldBe = 0;var checkSumDigit2_shouldBe = 0;for (i=0,j=10; i<9; i++,j--) {  checkSumDigit1_shouldBe += baseCPF.charAt(i) * j;}checkSumDigit1_shouldBe = ((checkSumDigit1_shouldBe * 10) % 11) % 10;for (i=0,j=11; i<9; i++,j--) {  checkSumDigit2_shouldBe += baseCPF.charAt(i) * j;}checkSumDigit2_shouldBe += checkSumDigit1*2;checkSumDigit2_shouldBe = ((checkSumDigit2_shouldBe * 10) % 11) % 10;if(checkSumDigit1_shouldBe != checkSumDigit1 || checkSumDigit2_shouldBe != checkSumDigit2){ return false;}else{ return true;}}function js_trimPreCPF(preCPF){var tempTextVal = js_trimStr(preCPF);var len = tempTextVal.length;if (null==len || len<1) return "";var tempCPF = "";var charPosition = new Array();var count = 0;var pattern = /^\s|\/|\-|\.$/;for (var i=0; i<len; i++)//(tempTextVal.charAt(i)=="."){ //nonspstr.test(textVal.charAt(i)) if (pattern.test(tempTextVal.charAt(i))) {  charPosition[count]=i;  count++;   } }if (charPosition.length > 0){ for(i=0; i<charPosition.length; i++){  if (i==0){   if ( i==charPosition.length-1){	tempCPF = tempCPF + tempTextVal.slice(0,charPosition[i]) + tempTextVal.slice(charPosition[i]+1);   }else{	tempCPF = tempCPF + tempTextVal.slice(0,charPosition[i]);   }  }else {   if (i==charPosition.length-1) {   tempCPF = tempCPF + tempTextVal.slice(charPosition[i-1]+1,charPosition[i]) + tempTextVal.slice(charPosition[i]+1);    }else {   tempCPF = tempCPF + tempTextVal.slice(charPosition[i-1]+1,charPosition[i]);   }  }  }return tempCPF;}else return tempTextVal;}function js_trimStr(textVal){var len=textVal.length;if (null==len || len<1) return "";var trimleft = "";var nonspstr = /^\S$/;var spaceCount = 0;for (i=0; i<len; i++){ if ( nonspstr.test(textVal.charAt(i)) )  break; else  spaceCount++;}if (spaceCount==len) return "";else trimleft = textVal.slice(spaceCount);len = trimleft.length;spaceCount = 0;for (i=len-1; i > 0; i--){ if ( nonspstr.test(trimleft.charAt(i)) )  break; else  spaceCount++;}if (spaceCount==0) return trimleft;else return trimleft.slice(0, len-spaceCount);}

e meu campo cpf:

<input name="cpf" type="text" id="cpfID" size="12" onKeyPress="return txtBoxFormat(this.form, this.name, '999.999.999-99', event);" onKeyUp="return autoTab(this, 14, event);" onBlur="ProcurarCompativel(event);">

Como adapto a função?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não tinha reparado, mas se você já usa o onBlur="ProcurarCompativel(event);" para ver trazer os dados se já existir, faça a validação do CPF pelo ASP! :)

Putz cara não dáa pra fazer pelo JS?

não faço a mínima idéia como eu vou fazer isso no ASP. rs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esse é o arquivo do compativel:

 

<%@ LANGUAGE="VBScript" %><%set Conexcao = Server.CreateObject("ADODB.Connection")Conexcao.ConnectionString = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MaPpath("banco/db_sistema.mdb")Conexcao.open	'Buffer output.	Response.Buffer = true	'Set response Content-type header.	Response.ContentType = "text/plain"Sql = "Select ficha_de_pessoal.codmovimeta,ficha_de_pessoal.cpf,demitidos.codpessoa,demitidos.data_inicio,demitidos.data_fim From demitidos,ficha_de_pessoal Where ficha_de_pessoal.cpf='"&request("Codigo")&"' and demitidos.codpessoa = ficha_de_pessoal.codmovimeta"	Set Rs = Conexcao.Execute(Sql)	If not (rs.BOF and rs.EOF) then		Response.Write(rs("data_inicio")&" a "&rs("data_fim"))	Else	Response.Write("Nunca foi contratado pela NewStyle")	End if%>

eu coloco esse script que você me passou antes ou depois?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ajax.js

//-----------------------------------------------------------------------------// Define some constants.//-----------------------------------------------------------------------------// Define a list of Microsoft XML HTTP ProgIDs.var XMLHTTPREQUEST_MS_PROGIDS = new Array(	"Msxml2.XMLHTTP.7.0",	"Msxml2.XMLHTTP.6.0",	"Msxml2.XMLHTTP.5.0",	"Msxml2.XMLHTTP.4.0",	"MSXML2.XMLHTTP.3.0",	"MSXML2.XMLHTTP",	"Microsoft.XMLHTTP");// Define ready state constants.var XMLHTTPREQUEST_READY_STATE_UNINITIALIZED = 0;var XMLHTTPREQUEST_READY_STATE_LOADING	   = 1;var XMLHTTPREQUEST_READY_STATE_LOADED		= 2;var XMLHTTPREQUEST_READY_STATE_INTERACTIVE   = 3;var XMLHTTPREQUEST_READY_STATE_COMPLETED	 = 4;//-----------------------------------------------------------------------------// Returns an XMLHttpRequest object.//-----------------------------------------------------------------------------function getXMLHttpRequest(){	var httpRequest = null;	// Create the appropriate HttpRequest object for the browser.	if (window.XMLHttpRequest != null)		httpRequest = new window.XMLHttpRequest();	else if (window.ActiveXObject != null)	{		// Must be IE, find the right ActiveXObject.		var success = false;		for (var i = 0; i < XMLHTTPREQUEST_MS_PROGIDS.length && !success; i++)		{			try			{				httpRequest = new ActiveXObject(XMLHTTPREQUEST_MS_PROGIDS[i]);				success = true;			}			catch (ex)			{}		}	}	// Display an error if we couldn't create one.	if (httpRequest == null)		alert("Error in HttpRequest():\n\nCannot create an XMLHttpRequest object.");	// Return it.	return httpRequest;}//-----------------------------------------------------------------------------// This code uses an XMLHttpRequest object to look up the city and state of the// ZIP code entered by the user. That data is then used to populate the// corresponding form fields.//-----------------------------------------------------------------------------var cityStateLookup = getXMLHttpRequest();function ProcurarCompativel(event){	// Clear the status text.	//setStatusText("");	// Check for a zip code.	var Codigo = document.getElementById("cpf").value;	// Perform an asynchronous request to get the matching city and state.	var url = "pesquisabanco.asp?Codigo=" + Codigo;	cityStateLookup.onreadystatechange = cityStateReadyStateChange;	cityStateLookup.open("GET", url, true);	cityStateLookup.send(null);}function cityStateReadyStateChange(){	//var statusText;	// Check the ready state.	switch (cityStateLookup.readyState)	{		case XMLHTTPREQUEST_READY_STATE_UNINITIALIZED:			//statusText = "";			break;		case XMLHTTPREQUEST_READY_STATE_LOADING:			//statusText = "Initialzing ZIP Code lookup...";			break;		case XMLHTTPREQUEST_READY_STATE_LOADED:			//statusText = "Sending data...";			break;		case XMLHTTPREQUEST_READY_STATE_INTERACTIVE:			//statusText = "Downloading data...";			break;		case XMLHTTPREQUEST_READY_STATE_COMPLETED:			// Assume no match was found.			//statusText = "ZIP Code not found."			// Fill in the city and state fields, if available.			try			{				var data = cityStateLookup.responseText.split(",");				if (data.length == 1)				{					document.getElementById("ultimo_registro").value  = data[0];					//statusText = "ZIP Code found."				}			}			catch (ex)			{}			break;		default:			//statusText = "Unknown error.";			break;	}	// Update the status message.	}function setStatusText(text){   	var el = document.getElementById("statusText");	if (el.firstChild == null)		el.appendChild(document.createTextNode(""));	el.firstChild.nodeValue = text;}function envia(url, metodo, modo){	var nasc = document.getElementById('str_data').value;	remoto  = new ajax();	xmlhttp = remoto.enviar(url + "?nasc=" + nasc, metodo, modo);	if(xmlhttp) {		alert("Não pode ser contratado com idade inferior a 18 anos completos");		document.getElementById("Enviar").disabled = true;	} else {		document.getElementById("Enviar").disabled = false;  }}

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

No campo onde aparecia Nunca foi contratado pela NewStyle, esta aparecendo a palavra erro

Compartilhar este post


Link para o post
Compartilhar em outros sites

tb escreveu Erro no mesmo campo!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu mesmo Adriano!Abraços

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.