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.
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;
}
}
)
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
Perfecto!
Muy buen apunte David.
Gracias!