sábado, 27 de junio de 2009

Validador de Rut en Spry

A propósito de una consulta en el mmug, recordé que tenía en el tintero una "extensión" del validador para campos de textos de Spry. Dicha extensión agrega un nuevo validador a los ya existentes.

La modificación la deben aplicar en el objeto, del archivo SpryValidationTextField.js,
Spry.Widget.ValidationTextField.ValidationDescriptors.

El código agregado es:
    'rut':{
   //expresión regular que valida el formato
   regExpFilter: /^([0-9])+\-([kK0-9])+$/,
   validation: function(value){
       if(value == ''){
           return false;
       }
       var rexp = new RegExp(/^([0-9])+\-([kK0-9])+$/);
       if(!value.match(rexp)){
           return false;
       }
       var RUT  = value.split("-");
       var elRut = RUT[0];
       var factor = 2;
       var suma = 0;
       var dv;
       for(i=(elRut.length-1); i>=0; i--){
           factor = factor > 7 ? 2 : factor;
           suma += parseInt(elRut[i])*parseInt(factor++);
       }
       var ret = value;
       dv = 11 -(suma % 11);
       if(dv == 11){
           dv = 0;
       }else if (dv == 10){
           dv = "k";
       }
       if(dv != RUT[1].toLowerCase()){
           ret= false;
       }
       return ret
   }
}
Lo que hice fue reutilizar la función javascript para validar rut que publiqué hace unos días. Para utlizarla basta con instanciar todos los elementos propios de los objetos de validación Spry, pero en el tipo de validación indicar el tipo "rut":
var rut = new Spry.Widget.ValidationTextField("idDelContenedor","rut",{validateOn:["blur","change"]});

Por supuesto, pueden probarlo acá y descargar el archivo SpryValidationTextField.js modificado acá.

Actualización: Lester me indicó que no funcionaba en Internet Explorer, aquí está la versión corregida.

13 comentarios:

  1. Estaré yo loco, pero probé el "acá" http://www.andrade.cl/labs/spry_extended.php y me dice que mi rut es incorrecto :S

    ¿Habrá alguna pifia por ahí, o será que no existo?

    ResponderEliminar
  2. Entre tanto RUT, vas a terminar en el registro civil :D

    ResponderEliminar
  3. @Lester: el problema es con Internet Explorer, nuestro departamento de soporte se encuentra trabajando en buscar la causa/solución al problema.

    @Tarso: Es parte de mi plan de estafas :P.

    ResponderEliminar
  4. expresion regular Rut Chileno
    ^\d{1,2}\d{3}\d{3}[-][0-9kK]{1}$

    ResponderEliminar
  5. Expresion Regular Rut Chileno
    ^\d{1,2}\d{3}\d{3}[-][0-9kK]{1}$

    la funcion para validar un textbox con el rut chileno en lenguaje VB.NET 2005, recordar declarar arriba al principio de la pagina Imports System.Text.RegularExpressions y luego... el rut , sin puntos, pero con guion seria....en el evento click del boton...

    If Not IsDBNull(RutTextBox.Text) _
    AndAlso Not String.IsNullOrEmpty(RutTextBox.Text) Then
    Dim Txt = RutTextBox.Text Dim Reg As New Regex("^\d{1,2}\d{3}\d{3}[-][0-9kK]{1}$") '("/^([0-9])+\-([kK0-9])+$/")
    Dim m As Match = Reg.Match(Txt)
    If m.Success Then

    Else
    MsgBox("Debe ingresar un rut válido")
    RutTextBox.Focus()


    End If
    End If

    Eduardo Escanilla A.
    Programador.

    ResponderEliminar
  6. Tu expresión regular está ok. A tú código faltaría agregar el algoritmo de validación (módulo 11) para el rut.

    ResponderEliminar
  7. Lo Programare xq no lo tengo Serca luego cuando pueda lo Subo con el Modulo :) Saludos!!!

    ResponderEliminar
  8. Anónimo5:08 p.m.

    valen callampa los programadores

    ResponderEliminar
  9. Anónimo3:24 p.m.

    como seria la aplicación regular para el rut con puntos y guion?

    ResponderEliminar
  10. Anónimo6:05 p.m.

    La correcta expresión regular RUT Chileno es:

    ^\d{1,8}-{1}[0-9kK]{1}$

    ResponderEliminar
  11. Hola jorge no puedo insertar spry con dreamweaver como lo hago


    gracias

    ResponderEliminar
  12. Anónimo9:39 a.m.

    Como se pone el el archivo en el dreamweaver ... Ayuda!

    ResponderEliminar
  13. Alguna guia de como aplicarlo en dreamweaver?, he tratado de modificar los archivos pero me sale este error como un alert cuando recargo la pagina del formulario:

    "Spry.Widget.TextField ERR: The second parameter in the constructor should be the validation type, the options are the third parameter."

    si tienes un paso a paso de como hacerlo te lo agradecería un montón.

    ResponderEliminar