SlideShare ist ein Scribd-Unternehmen logo
1 von 6
/* Copyright (c) 2009 José Joaquín Núñez (josejnv@gmail.com) http://joaquinnunez.cl/blog/
 * Licensed under GPL (http://www.opensource.org/licenses/gpl-2.0.php)
 * Use only for non-commercial usage.
 *
 * Version : 0.5
 *
 * Requires: jQuery 1.2+
 */

(function($)
{
  jQuery.fn.Rut = function(options)
  {
    var defaults = {
      digito_verificador: null,
      on_error: function(){},
      on_success: function(){},
      validation: true,
      format: true,
      format_on: 'change'
    };

  var opts = $.extend(defaults, options);

  return this.each(function(){

   if(defaults.format)
   {
     jQuery(this).bind(defaults.format_on, function(){
       jQuery(this).val(jQuery.Rut.formatear(jQuery(this).val(),defaults.digito_verificador==null));
     });
   }
   if(defaults.validation)
   {
     if(defaults.digito_verificador == null)
     {
       jQuery(this).bind('blur', function(){
         var rut = jQuery(this).val();
         if(jQuery(this).val() != "" && !jQuery.Rut.validar(rut))
         {
            defaults.on_error();
         }
         else if(jQuery(this).val() != "")
         {
            defaults.on_success();
         }
       });
     }
else
        {
          var id = jQuery(this).attr("id");
          jQuery(defaults.digito_verificador).bind('blur', function(){
           var rut = jQuery("#"+id).val()+"-"+jQuery(this).val();
           if(jQuery(this).val() != "" && !jQuery.Rut.validar(rut))
           {
              defaults.on_error();
           }
           else if(jQuery(this).val() != "")
           {
              defaults.on_success();
           }
          });
        }
   }
  });
 }
})(jQuery);

/**
 Funciones
*/


jQuery.Rut = {

 formatear: function(Rut, digitoVerificador)
     {
     var sRut = new String(Rut);
     var sRutFormateado = '';
     sRut = jQuery.Rut.quitarFormato(sRut);
     if(digitoVerificador){
       var sDV = sRut.charAt(sRut.length-1);
       sRut = sRut.substring(0, sRut.length-1);
     }
     while( sRut.length > 3 )
     {
       sRutFormateado = "." + sRut.substr(sRut.length - 3) + sRutFormateado;
       sRut = sRut.substring(0, sRut.length - 3);
     }
     sRutFormateado = sRut + sRutFormateado;
     if(sRutFormateado != "" && digitoVerificador)
     {
       sRutFormateado += "-"+sDV;
     }
     else if(digitoVerificador)
     {
sRutFormateado += sDV;
     }

     return sRutFormateado;
   },

quitarFormato: function(rut)
   {
     var strRut = new String(rut);
     while( strRut.indexOf(".") != -1 )
     {
     strRut = strRut.replace(".","");
     }
     while( strRut.indexOf("-") != -1 )
     {
     strRut = strRut.replace("-","");
     }

     return strRut;
   },

digitoValido: function(dv)
    {
      if ( dv != '0' && dv != '1' && dv != '2' && dv != '3' && dv != '4'
        && dv != '5' && dv != '6' && dv != '7' && dv != '8' && dv != '9'
        && dv != 'k' && dv != 'K')
      {
        return false;
      }
      return true;
    },

digitoCorrecto: function(crut)
     {
       largo = crut.length;
       if ( largo < 2 )
       {
         return false;
       }
       if(largo > 2)
       {
         rut = crut.substring(0, largo - 1);
       }
       else
       {
         rut = crut.charAt(0);
       }
       dv = crut.charAt(largo-1);
jQuery.Rut.digitoValido(dv);

     if(rut == null || dv == null)
     {
       return 0;
     }

     dvr = jQuery.Rut.getDigito(rut);

      if (dvr != dv.toLowerCase())
      {
        return false;
      }
      return true;
    },

getDigito: function(rut)
   {
     var dvr = '0';
     suma = 0;
     mul = 2;
     for(i=rut.length -1;i >= 0;i--)
     {
       suma = suma + rut.charAt(i) * mul;
       if (mul == 7)
       {
         mul = 2;
       }
       else
       {
         mul++;
       }
     }
     res = suma % 11;
     if (res==1)
     {
       return 'k';
     }
     else if(res==0)
     {
       return '0';
     }
     else
     {
       return 11-res;
     }
   },
validar: function(texto)
    {
      texto = jQuery.Rut.quitarFormato(texto);
      largo = texto.length;

    // rut muy corto
    if ( largo < 2 )
    {
      return false;
    }

    // verifica que los numeros correspondan a los de rut
    for (i=0; i < largo ; i++ )
    {
      // numero o letra que no corresponda a los del rut
      if(!jQuery.Rut.digitoValido(texto.charAt(i)))
      {
        return false;
      }
    }

    var invertido = "";
    for(i=(largo-1),j=0; i>=0; i--,j++)
    {
      invertido = invertido + texto.charAt(i);
    }
    var dtexto = "";
    dtexto = dtexto + invertido.charAt(0);
    dtexto = dtexto + '-';
    cnt = 0;

    for ( i=1,j=2; i<largo; i++,j++ )
    {
      if ( cnt == 3 )
      {
        dtexto = dtexto + '.';
        j++;
        dtexto = dtexto + invertido.charAt(i);
        cnt = 1;
      }
      else
      {
        dtexto = dtexto + invertido.charAt(i);
        cnt++;
      }
    }

    invertido = "";
for (i=(dtexto.length-1),j=0; i>=0; i--,j++)
         {
           invertido = invertido + dtexto.charAt(i);
         }

         if (jQuery.Rut.digitoCorrecto(texto))
         {
           return true;
         }
         return false;
     }
};

Weitere ähnliche Inhalte

Was ist angesagt? (15)

modern javascript, unobtrusive javascript, jquery
modern javascript, unobtrusive javascript, jquerymodern javascript, unobtrusive javascript, jquery
modern javascript, unobtrusive javascript, jquery
 
Java Thread Cronometro
Java Thread CronometroJava Thread Cronometro
Java Thread Cronometro
 
Clojure lightning talk
Clojure lightning talkClojure lightning talk
Clojure lightning talk
 
Practica 4 errores
Practica 4 erroresPractica 4 errores
Practica 4 errores
 
Node.JS
Node.JSNode.JS
Node.JS
 
Lab2 sdmp
Lab2 sdmpLab2 sdmp
Lab2 sdmp
 
Co w
Co wCo w
Co w
 
c ++ informe Nº5 ucsm
c ++ informe Nº5 ucsmc ++ informe Nº5 ucsm
c ++ informe Nº5 ucsm
 
Taller1
Taller1Taller1
Taller1
 
EJEMPLOS DESARROLLADOS
EJEMPLOS DESARROLLADOSEJEMPLOS DESARROLLADOS
EJEMPLOS DESARROLLADOS
 
Java AWT Calculadora
Java AWT CalculadoraJava AWT Calculadora
Java AWT Calculadora
 
Coding manalagi
Coding manalagiCoding manalagi
Coding manalagi
 
Funcion num a letras
Funcion num a letrasFuncion num a letras
Funcion num a letras
 
Convertir numero a letras.
Convertir numero a letras.Convertir numero a letras.
Convertir numero a letras.
 
Programación funcional en Haskell
Programación funcional en HaskellProgramación funcional en Haskell
Programación funcional en Haskell
 

Andere mochten auch

Andere mochten auch (7)

Writer Group
Writer GroupWriter Group
Writer Group
 
The 3rd Thing UC Davis Gets You
The 3rd Thing UC Davis Gets YouThe 3rd Thing UC Davis Gets You
The 3rd Thing UC Davis Gets You
 
Technology 2021
Technology 2021Technology 2021
Technology 2021
 
International Dairy trade
International Dairy trade International Dairy trade
International Dairy trade
 
Technology 2021
Technology 2021Technology 2021
Technology 2021
 
HPR Integrated Design - BIM/IPD Proposal Presentation
HPR Integrated Design - BIM/IPD Proposal PresentationHPR Integrated Design - BIM/IPD Proposal Presentation
HPR Integrated Design - BIM/IPD Proposal Presentation
 
HPR Integrated Design - BIM/IPD Proposal Presentation
HPR Integrated Design - BIM/IPD Proposal PresentationHPR Integrated Design - BIM/IPD Proposal Presentation
HPR Integrated Design - BIM/IPD Proposal Presentation
 

Mehr von Rudy Medina (14)

Espacios vectoriales
Espacios vectorialesEspacios vectoriales
Espacios vectoriales
 
Espacios vectoriales ita
Espacios vectoriales itaEspacios vectoriales ita
Espacios vectoriales ita
 
Módulos algebra de matrices (1)
Módulos algebra de matrices (1)Módulos algebra de matrices (1)
Módulos algebra de matrices (1)
 
5 repaso de_matrices
5 repaso de_matrices5 repaso de_matrices
5 repaso de_matrices
 
07 nociones de algebra lineal
07 nociones de algebra lineal07 nociones de algebra lineal
07 nociones de algebra lineal
 
1 algebra lineal y vectores aleatorios
1 algebra lineal y vectores aleatorios1 algebra lineal y vectores aleatorios
1 algebra lineal y vectores aleatorios
 
Interconexiones de redes (networking)
Interconexiones de redes (networking)Interconexiones de redes (networking)
Interconexiones de redes (networking)
 
Trabajo antena
Trabajo antenaTrabajo antena
Trabajo antena
 
Capitulo 7rudy
Capitulo 7rudyCapitulo 7rudy
Capitulo 7rudy
 
8
88
8
 
Trabajo final
Trabajo finalTrabajo final
Trabajo final
 
Informe de sistema operativo
Informe de sistema operativoInforme de sistema operativo
Informe de sistema operativo
 
Base de datos
Base de datosBase de datos
Base de datos
 
Creando una interfaz grafica
Creando una interfaz graficaCreando una interfaz grafica
Creando una interfaz grafica
 

Rut

  • 1. /* Copyright (c) 2009 José Joaquín Núñez (josejnv@gmail.com) http://joaquinnunez.cl/blog/ * Licensed under GPL (http://www.opensource.org/licenses/gpl-2.0.php) * Use only for non-commercial usage. * * Version : 0.5 * * Requires: jQuery 1.2+ */ (function($) { jQuery.fn.Rut = function(options) { var defaults = { digito_verificador: null, on_error: function(){}, on_success: function(){}, validation: true, format: true, format_on: 'change' }; var opts = $.extend(defaults, options); return this.each(function(){ if(defaults.format) { jQuery(this).bind(defaults.format_on, function(){ jQuery(this).val(jQuery.Rut.formatear(jQuery(this).val(),defaults.digito_verificador==null)); }); } if(defaults.validation) { if(defaults.digito_verificador == null) { jQuery(this).bind('blur', function(){ var rut = jQuery(this).val(); if(jQuery(this).val() != "" && !jQuery.Rut.validar(rut)) { defaults.on_error(); } else if(jQuery(this).val() != "") { defaults.on_success(); } }); }
  • 2. else { var id = jQuery(this).attr("id"); jQuery(defaults.digito_verificador).bind('blur', function(){ var rut = jQuery("#"+id).val()+"-"+jQuery(this).val(); if(jQuery(this).val() != "" && !jQuery.Rut.validar(rut)) { defaults.on_error(); } else if(jQuery(this).val() != "") { defaults.on_success(); } }); } } }); } })(jQuery); /** Funciones */ jQuery.Rut = { formatear: function(Rut, digitoVerificador) { var sRut = new String(Rut); var sRutFormateado = ''; sRut = jQuery.Rut.quitarFormato(sRut); if(digitoVerificador){ var sDV = sRut.charAt(sRut.length-1); sRut = sRut.substring(0, sRut.length-1); } while( sRut.length > 3 ) { sRutFormateado = "." + sRut.substr(sRut.length - 3) + sRutFormateado; sRut = sRut.substring(0, sRut.length - 3); } sRutFormateado = sRut + sRutFormateado; if(sRutFormateado != "" && digitoVerificador) { sRutFormateado += "-"+sDV; } else if(digitoVerificador) {
  • 3. sRutFormateado += sDV; } return sRutFormateado; }, quitarFormato: function(rut) { var strRut = new String(rut); while( strRut.indexOf(".") != -1 ) { strRut = strRut.replace(".",""); } while( strRut.indexOf("-") != -1 ) { strRut = strRut.replace("-",""); } return strRut; }, digitoValido: function(dv) { if ( dv != '0' && dv != '1' && dv != '2' && dv != '3' && dv != '4' && dv != '5' && dv != '6' && dv != '7' && dv != '8' && dv != '9' && dv != 'k' && dv != 'K') { return false; } return true; }, digitoCorrecto: function(crut) { largo = crut.length; if ( largo < 2 ) { return false; } if(largo > 2) { rut = crut.substring(0, largo - 1); } else { rut = crut.charAt(0); } dv = crut.charAt(largo-1);
  • 4. jQuery.Rut.digitoValido(dv); if(rut == null || dv == null) { return 0; } dvr = jQuery.Rut.getDigito(rut); if (dvr != dv.toLowerCase()) { return false; } return true; }, getDigito: function(rut) { var dvr = '0'; suma = 0; mul = 2; for(i=rut.length -1;i >= 0;i--) { suma = suma + rut.charAt(i) * mul; if (mul == 7) { mul = 2; } else { mul++; } } res = suma % 11; if (res==1) { return 'k'; } else if(res==0) { return '0'; } else { return 11-res; } },
  • 5. validar: function(texto) { texto = jQuery.Rut.quitarFormato(texto); largo = texto.length; // rut muy corto if ( largo < 2 ) { return false; } // verifica que los numeros correspondan a los de rut for (i=0; i < largo ; i++ ) { // numero o letra que no corresponda a los del rut if(!jQuery.Rut.digitoValido(texto.charAt(i))) { return false; } } var invertido = ""; for(i=(largo-1),j=0; i>=0; i--,j++) { invertido = invertido + texto.charAt(i); } var dtexto = ""; dtexto = dtexto + invertido.charAt(0); dtexto = dtexto + '-'; cnt = 0; for ( i=1,j=2; i<largo; i++,j++ ) { if ( cnt == 3 ) { dtexto = dtexto + '.'; j++; dtexto = dtexto + invertido.charAt(i); cnt = 1; } else { dtexto = dtexto + invertido.charAt(i); cnt++; } } invertido = "";
  • 6. for (i=(dtexto.length-1),j=0; i>=0; i--,j++) { invertido = invertido + dtexto.charAt(i); } if (jQuery.Rut.digitoCorrecto(texto)) { return true; } return false; } };