Publicado por: 3

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.

3 Comentarios

  1. David J.

    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. David J.

    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

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.