2011-07-08 29 views

Trả lời

3

Đây là tính năng đã biết của Chrome và nhanh chóng Google on the topic sẽ mang đến một số cuộc thảo luận thú vị.

Nó có ý nghĩa với tôi rằng sự kiện change sẽ không sa thải vì không có gì đã thay đổi (bạn đang chọn cùng một tập tin)

Đối với câu hỏi của bạn, những gì chính xác bạn yêu cầu? Bạn đang tìm kiếm một cách để thay đổi hành vi này hoặc bạn chỉ muốn biết nếu chúng tôi đã nhận thấy điều này là tốt?

Nếu bạn muốn có một hành vi xung quanh hành vi này, bạn có thể chỉ cần tạo đầu vào tệp mới trong Javascript của mình và thay thế tệp trước đó. Bằng cách này, sự kiện change của bạn thật đáng sợ.

+4

thực sự tôi chỉ cần thiết lập giá trị đầu vào cho chuỗi rỗng và nó thiết lập lại nó, vì vậy nếu người dùng sẽ lựa chọn cùng một tập tin tôi sẽ có được sự kiện. tôi phải nói rằng tôi không đồng ý với bạn rằng điều này hoạt động như mong đợi. Tôi sẽ nhận được một số thông báo rằng người dùng đã chọn một tệp (bất kỳ tệp nào, ngay cả khi nó giống nhau), nhưng trong phương pháp này bạn (người ủng hộ) không biết rằng hành động này đã xảy ra. – Amir

3
function resetFileInput($element) { 
    var clone = $element.clone(); 
    $element.replaceWith(clone); 
} 

Và sau đó sử dụng:

$('#element_id').on('change', function(){ 
... 
}); 

Làm việc tốt cho tôi!

0

Một giải pháp dễ dàng hơn để thiết lập lại một tập tin đầu vào mà làm việc tốt cho tôi:

document.getElementById('idOfInput').value = ''; 
+0

Lưu ý rằng điều này sẽ không hoạt động trong IE (IE8-IE11 +) khi đầu vào tệp được đánh dấu là 'chỉ đọc'. Một cách khác là [bọc nó trong một biểu mẫu và đặt lại biểu mẫu] (http://stackoverflow.com/a/14587296/1030702). – Bob

Các vấn đề liên quan