Dica para cálculo do digito verificador. Módulo 11 em javascript

0 respostas
E
function modulo11(num){
		var base = 2;		
		var fator = 9;		
		var digito;
		var resto;
		var numeros = new Array();
		var parcial = new Array();
		var soma = 0;
		var tam =0;	
		var siz =0;
		var dv1=0;
		
		if(num == ""){
			limpaCampos("formBaixa");
			return false
		};
		
		if(num.length < 13){
			alert("Nosso Numero invalido!");
			limpaCampos("formBaixa");						
			return false;
		}
		siz = num.substr(0,6);
                //valida se o dominio/protoco eh valido
		if(siz != '829526'){
			alert("Nosso Numero invalido!");
			limpaCampos("formBaixa");
			return false;
		}		
		
		//recebe apenas os 11 primeiros digitos para cálculo
		tam = num.substr(0,11);	
				
		/*separação dos números*/
		for(i=tam.length;i>0;i--){		    
			numeros[i]=tam.substr(i-1,1); //pega cada número isoladamente			
			parcial[i]=numeros[i]*fator; //Efetua a multiplicação do número pelo fator
			soma += parcial[i]; //soma dos digitos
			if(fator==base)fator=10; //restaura o fator de multiplicação para 2
			fator --;			 
		}		
		
		/*Calculo do módulo11*/
		resto = soma % 11;		
		if (resto < 10){ 
			dv = resto; 
		}else if(resto == 10){ 
			dv = 'x'; 
		}		
		//verifica se o digito verificador eh o mesmo calculado pelo módulo11
		dv1 = num.substr(12,12);
		if(dv != dv1){
			alert("Nosso Numero invalido!");
			limpaCampos("formBaixa");
			return false;
		}		
		return true;
	}
        
        function limpaCampos(frm){		
		document.forms[frm].reset();
	}

//passando valor campo html
<input name="numero" id="numero" type="text" size="18"   maxlength="13" onBlur="modulo11(this.value)"/>
Criado 17 de janeiro de 2008
Respostas 0
Participantes 1