quinta-feira, 26 de maio de 2011

Validar CPF Adobe Flex 3

    public static function isCPFValido(ent : String):Boolean{
   
     if (ent.length == 0)
      return false;
   
     var i : int;
     var ok : Boolean = false;
     var aux : String = ent.charAt(0);
     for(i=0;i<ent.length;i++){
      if ( aux !== ent.charAt(i) ){
       ok = true;
       break;      
      }
     }
      
     if ( !ok )
      return false;
        
  //criamos arrays dos pesos
  var Peso1 : Array = [10, 9, 8, 7, 6, 5, 4, 3, 2];
  var Peso2 : Array = [11, 10, 9, 8, 7, 6, 5, 4, 3, 2];
 
  var cpfVal:String = ent;
 
  var j : int;
  var digito1 : Number;
  var digito2 : Number;
  // criamos as variáveis que nos auxiliarão no cálculo dos dígitos verificadores
  var soma1:Number = new Number ();
  var resto1:Number = new Number ();
  var soma2:Number = new Number ();
  var resto2:Number = new Number ();
  // utilizamos o for com o incremento i ( i++ )
  for (i = 0; i < Peso1.length; i++)
   soma1 += new Number(cpfVal.charAt(i)) * Peso1[i];
 
  // o cálculo do resto é feito utilizando o operador % ( porcentagem )
  // que retorna o resto da divisão da soma por 11
  resto1 = soma1 % 11;
  // criamos a condicão para o caso do resultado ser menor ou igual a 1
  if (resto1 <= 1) {
  // se for o digito verificador é igual a 0 ( zero )
  digito1 = 0;
  } else {
  // senão é igual a 11 menos o resto
  digito1 = 11 - resto1;
  }
  // agora o cálculo do segundo dígito que segue o mesmo padrão anterior
  for (j = 0; j < Peso2.length; j++)
   soma2 += new Number(cpfVal.charAt (j)) * Peso2[j];
 
  resto2 = soma2 % 11;
  if (resto2 <= 1) {
  digito2 = 0;
  } else {
  digito2 = 11 - resto2;
  }
  // chegamos então a nossa condição final
  // se o décimo digito - cpfVal.charAt(9) - for igual ( o símbolo == )
  // ao dígito verificador calculado ou ...
  // se o décimo digito - cpfVal.charAt(10) - for igual ao dígito verificador calculado ou ...
  // o tamanho da número digitado for igual de onze algarismos
  // lembrando que o charAt(9) indica a décima "casa" ( posição )
  // porque a primeira "casa" é sempre 0 ( zero )
  if (new Number(cpfVal.charAt (9)) == digito1 && new Number(cpfVal.charAt (10)) == digito2 && cpfVal.length == 11) {
  // se todas as condições estiverem ok
  // você pode acrescentar aqui outras ações do tipo ir para algum frame
  // enviar as informações para o servidor
  // etc
  //trace ( "CPF Válido" );
   return true;
  } else {
  // senão ...
  //trace ( "CPF Inválido" );
   return false;
  }
 
    }


Vitor Yudi Hansen