2011-12-25 25 views
5

Tengo campos de entrada de archivos en un grupo como el siguiente. Me gustaría que todos sean campos obligatorios.JQuery Check Input File

<!-- file upload group --> 
<div class="Fieldset FileUpGroup"> 
    <span class="Legend">File Upload Group: (required)</span> 
    <input name="fileUploads[]" type="file"> 
    <input name="fileUploads[]" type="file"> 
    <input name="fileUploads[]" type="file"> 
</div> 

Tengo el siguiente JQuery para validar, pero solo valida el primero.

$('.FileUpGroup').each(function() { 
    if($(this).find('input[type=file]').val() == '') { 
     Response('- Upload file not selected!', true); 
     $(this).addClass('Error').fadeOut().fadeIn(); 
     return false; 
    } 
    else { 
     $(this).removeClass('Error'); 
    } 
}); 

Thank you!

Respuesta

9

Estás usando each() en el elemento equivocado:

$('input[type="file"]').each(function() { 
    var $this = $(this); 
    if ($this.val() == '') { 
     Response('- Upload file not selected!', true); 
     $this.addClass('Error').fadeOut().fadeIn(); 
     return false; 
    } else { 
     $this.removeClass('Error'); 
    } 
}); 
+0

¡Gracias! Funciona increíble. – user1108996

+0

Me alegra ayudar :) – AlienWebguy

+0

Funcionó muy bien. Muchas gracias. –

0

.val() sólo devuelve el primer valor.
En su bucle ($('.FileUpGroup').each) solo se activa para un elemento ... elemento DIV.FileUpGroup.
$('.FileUpGroup input[type=file]') encontrará todos los artículos y luego los repetirá uno a la vez
Aquí hay un ejemplo. Espero haber sido útil.

$('.FileUpGroup input[type=file]').each(function() { 
    if($(this).val() === '') { 
     // wabba dabba do 
    } 
    else { 
     // badda bawwa do 
    } 
}); 
Cuestiones relacionadas