2011-12-25 29 views
5

Tôi có các trường nhập tệp trong một nhóm như dưới đây. Tôi muốn tất cả chúng là những trường bắt buộc.Kiểm tra tệp đầu vào 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> 

Tôi có JQuery sau đây để xác thực, nhưng nó chỉ xác thực giá trị đầu tiên.

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

Cảm ơn bạn!

Trả lời

9

Bạn đang sử dụng each() trên các yếu tố sai:

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

Cảm ơn bạn! Nó hoạt động tuyệt vời. – user1108996

+0

Vui mừng được giúp đỡ :) – AlienWebguy

+0

Đã làm việc tuyệt vời. Cảm ơn rất nhiều. –

0

.val() chỉ trả về giá trị đầu tiên.
Trong vòng lặp ($('.FileUpGroup').each) của bạn chỉ được kích hoạt cho một mục ... phần tử DIV.FileUpGroup.
$('.FileUpGroup input[type=file]') sẽ tìm tất cả các mục và sau đó lặp lại từng mục một
Dưới đây là ví dụ. Hy vọng tôi đã có ích.

$('.FileUpGroup input[type=file]').each(function() { 
    if($(this).val() === '') { 
     // wabba dabba do 
    } 
    else { 
     // badda bawwa do 
    } 
}); 
Các vấn đề liên quan