2013-09-27 131 views
6

Tôi có rất nhiều các loại đầu vào:Cách kiểm tra xem một trong các loại đầu vào của tệp có giá trị không?

<input type="file" name="file_upload"> 

Và khi nút gửi được nhấp, tôi muốn kiểm tra qua JS nếu một trong các lĩnh vực này là không có sản phẩm nào (nói cách khác, có ít nhất một tập tin được đã tải lên).

Dưới đây là mã của tôi mà không làm việc:

$('#upload-button').live('click', function() { 
    var has_selected_file = $('input[type=file]').val(); 

    if (has_selected_file) { 
    /* do something here */ 
    } 
    else { 
    alert("No file selected"); 
    } 
}); 

này luôn luôn cảnh báo không có tập tin được chọn.

Trả lời

7

Sử dụng .filter() để findout yếu tố đầu vào với một giá trị, và kiểm tra độ dài

$('#upload-button').live('click', function() { 
    var has_selected_file = $('input[type=file]').filter(function(){ 
     return $.trim(this.value) != '' 
    }).length > 0 ; 

    if (has_selected_file) { 
     /* do something here */ 
    } 
}); 
+0

Nhờ nó làm việc, chăm sóc để giải thích việc sử dụng các bộ lọc và một phần lợi nhuận quá là gì? –

+0

@BelmarkCaday Tôi vừa cập nhật để sửa lỗi –

+1

'filter' là hàm gốc js thực thi hàm được chỉ định trên mọi thành viên của đối tượng/mảng. Ở đây bạn lặp qua bộ sưu tập các thẻ [file] đầu vào và trả về một mảng của tất cả các phần tử với một tệp được chọn. Nếu mảng này có độ dài khác 0, 'has_selected_file' là true .. do đó' làm điều gì đó' – jagzviruz

1

bạn chỉ có thể làm:

var has_selected_file = $.trim($('input[type=file]').val()); 

if (has_selected_file != "") { 
    /* do something here */ 
} 
else { 
    alert("No file selected"); 
}