Agregación y remoción de registros de tablas con campos validables

Como podía esperarse, el siguiente paso era obvio: la integración entre las tablas manipuladas con DOM para agregar y remover fácilmente registros y la validación de campos utilizando Really easy field validation library y Prototype.

Las tablas pueden ser validadas de dos maneras: la interna, incluida en la versión 0.1 de la distribución verifica que se intenta ingresar en el campo y permite o impide su digitación según el validador especificado, no muestra mensajes de error.  El segundo tipo de validación, la externa, se basa en RWFVL y verifica el contenido del campo cuando se pasa el foco sobre él, mostrando mensajes de error si no se cumple la validación.

Para determinar el método de validación a usarse, se verifica la existencia de la clase Validation del validador externo, en caso de encontrarse se utiliza este método, en caso contrario se utiliza el interno.

    
    

Tan pronto como se cargue el árbol DOM se debe especificar cuales de los formularios (con las tablas incluídas) serán expuestos al sistema de validación.

    document.observe('dom:loaded', function()
    {
        /* Determina cuales 
van a ser incluidos para la validación (externa) */         if(typeof(TDActivarValidacion) != undefined)             TDActivarValidacion(new Array('formulario1', 'formulario2'));     });

El resto de información configurable en la página cliente no ha cambiado desde la versión anterior.  Se deben definir las siguientes funciones.

  • TDObtEstructuraRegistro(tablaId): determina la estructura de las filas o registros de la tabla cuyo id es tablaId.
  • TDObtPropiedadesCampo(tablaId): determina las propiedades o atributos de un campo de la tabla cuyo id es tablaId.
  • TDObtPropiedadesFila(tablaId): determina las propiedades o atributos de una fila de la tabla cuyo id es tablaId..

La validación de los campos se activa incluyendo los parámetros apropiados en la variable validador del campo específico en el retorno de la función TDObtEstructuraRegistro.  Los posibles valores de esta variable son los siguientes.

Método de validación interno.

  • requerido
  • enteros
  • reales
  • no_numeros
  • letras_minusculas
  • letras_mayusculas
  • letras_todas
  • numeros_letras
  • email
  • telefono
  • url
  • fecha

Método de validación externo.

  • required (no vacío)
  • validate-number (un número válido)
  • validate-digits (sólo digitos)
  • validate-alpha (sólo letras)
  • validate-alphanum (sólo letras y números)
  • validate-date (una fecha válida)
  • validate-email (una dirección de correo válida)
  • validate-url (un URL válido)
  • validate-date-au (una fecha con formato; dd/mm/yyyy)
  • validate-currency-dollar (un valor de moneda)
  • validate-selection (una opción válida seleccionada)
  • validate-one-required (al menos un textbox/radio seleccionado)

Las opciones de validación externa pueden combinarse como por ejemplo en “required validate-number“.  Ver campo Edad del formulario de demostración.

Enlace:

2 thoughts on “Agregación y remoción de registros de tablas con campos validables”

  1. muy buena la solución para la entrada de datos de esta forma pero necesito que me ayuden para ver
    cómo puedo definir un registro en una tabla de tipo select y que me tome los campos de mysql nombre y codigo sustituyendo la lista fija de valores.
    Gracias de antemano, estoy muy necesitada de la ayuda, he porbado a sustituir de varias forma y no lo toma.

  2. @Niurka_sgm cordial saludo. Te recomiendo que revises el artículo de Manipulación fácil del DOM de una tabla con Prototype en el siguiente enlace.

    http://www.jorgeivanmeza.com/blog/2008/09/17/manipulacion-facil-del-dom-de-una-tabla-con-prototype/

    Si revisas el ejemplo que le acompaña encontrarás que el campo ‘Cargo’ es una lista desplegable como requieres. Ahora, como esta información viene desde la base de datos no es posible establecerla en JavaScript (lado del cliente), será necesario desarrollar algo del lado del servidor (PHP por ejemplo) que genere dinámicamente estos valores.

Leave a Reply

Your email address will not be published. Required fields are marked *