microTECHing
13Sep/113

Validar required en inputs de tipo file en Joomla

Si has llegado a este post posiblemente es que has observado que el validador mediante mootools que trae Joomla por defecto, no funciona bien con los inputs de tipo ‘file’.

Para solucionarlo, añadiendo esta funcionalidad, debemos editar el archivo ‘media/system/js/valídate.js’ y en la línea 87 reemplazar el primer ‘if’ por este:

if ($(el).hasClass('required')) {
    if (!($(el).getValue()) && ($(el).type != 'file')) {// Exluimos los inputs de type 'file'
        this.handleResponse(false, el);
        return false;
    }
    // Validación de los inputs de type 'file'
    if (($(el).type == 'file') && ($(el).value == '')){
        this.handleResponse(false, el);
        return false;
    }
}

Esperamos que os sea de ayuda.

Si te ha sido útil el post y no te importa animar a que sigamos escribiendo, solo son unos segundillos invitarnos a un café ;-)
Gracias de antebrazo!
Comentarios (3) Trackbacks (0)
  1. Exelente recomendacion, la probe y funciona al 100%…

    pero… para los que quieren ser un poco menos invasivos en el sitio, les recomiendo no que editen el archivo original, sino que reemplacen la funcion “validate” del archivo “validate.js” simplemente colocando en una etiqueta el siguiente codigo:

    Window.onDomReady
    (
    function()
    {
    document.formvalidator.validate =
    function(el)
    {
    // If the field is required make sure it has a value
    if ($(el).hasClass(‘required’)) {
    if (!($(el).getValue()) && ($(el).type != ‘file’)) {
    this.handleResponse(false, el);
    return false;
    }
    // Validacion de los inputs de type ‘file’
    if (($(el).type == ‘file’) && ($(el).value == ”)){
    this.handleResponse(false, el);
    return false;
    }

    }

    // Only validate the field if the validate class is set
    var handler = (el.className && el.className.search(/validate-([a-zA-Z0-9\_\-]+)/) != -1) ? el.className.match(/validate-([a-zA-Z0-9\_\-]+)/)[1] : “”;
    if (handler == ”) {
    this.handleResponse(true, el);
    return true;
    }

    // Check the additional validation types
    if ((handler) && (handler != ‘none’) && (this.handlers[handler]) && $(el).getValue()) {
    // Execute the validation handler and return result
    if (this.handlers[handler].exec($(el).getValue()) != true) {
    this.handleResponse(false, el);
    return false;
    }
    }

    // Return validation state
    this.handleResponse(true, el);
    return true;
    }
    }
    )

  2. La funcion de arriba es simplemente la original del archivo “validate.js”, con el codigo agregado, de esta forma si estamos creando un componente generico, no tendremos que hacer esa modificación cada vez que lo instalemos

  3. Perfecto!
    Muy buen apunte David.
    Gracias!


Leave a comment

Aún no hay trackbacks.