2011-12-25 198 views
5

我在下面的組中有文件輸入字段。我希望他們都是必填字段。JQuery檢查輸入文件

<!-- 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> 

我有以下JQuery來驗證,但它只驗證第一個。

$('.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'); 
    } 
}); 

謝謝!

回答

9

你是錯誤的元素上使用each()

$('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

謝謝!它工作真棒。 – user1108996 2011-12-25 07:37:02

+0

很高興幫助:) – AlienWebguy 2011-12-26 03:02:23

+0

工作很好。非常感謝。 – 2013-12-29 05:05:10

0

.val()只返回第一個值。
在您的循環中($('.FileUpGroup').each)僅針對一個項目激活... DIV.FileUpGroup元素。
$('.FileUpGroup input[type=file]')會找到所有的項目,然後一次迭代它們一個
這裏是一個例子。希望我一直很有用。

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