2015-12-14 12 views
5

Hãy xem xét điều này:Firefox cháy trên chọn, chứ không phải về biến đổi

<input type="file" id="filePicker"> 
<script> 
    document.getElementById('filePicker').onchange = function() { 
     alert('Hi!'); 
    }; 
</script> 

Thậm chí nếu bạn chọn cùng một tập tin và giá trị filePicker không thay đổi, bạn sẽ thấy hộp cảnh báo trong Firefox. Bất kỳ giải pháp?

+0

Chỉ cần giữ giá trị trước đó ở đâu đó và so sánh - nếu nó giống như một hình mới, bỏ qua. – Piskvor

+0

Chỉ cần giữ một bản ghi tên tệp trong một biến và kiểm tra xem giá trị mới có giống với giá trị cũ hay không. Nếu không, hãy chạy mã. – Andy

+0

@Piskvor: Tôi không biết cách thực hiện. – Mori

Trả lời

2

Sử dụng một biến tạm thời để giữ tên của tên tập tin mà bạn có thể kiểm tra lần sau khi bạn chọn một tập tin:

var filenameTemp = null; 
document.getElementById('filePicker').onchange = function(e) { 
    var filename = e.target.value; 
    if (filename !== filenameTemp) { 
    filenameTemp = filename; 
    console.log('OK'); 
    // other code 
    } else { 
    console.log('Not OK') 
    } 
}; 

DEMO

+0

Cách tiếp cận tốt đẹp! Cảm ơn! – Mori

1

Chạy đoạn mã dưới đây. Nó sẽ nói "Tập tin mới!" khi có một tệp mới cho cả Chrome và Firefox.

var previousFile = {}; 
 

 
function isSame(oldFile, newFile) { 
 
    return oldFile.lastModified === newFile.lastModified && 
 
    oldFile.name === newFile.name && 
 
    oldFile.size === newFile.size && 
 
    oldFile.type === newFile.type; 
 
} 
 

 
document.getElementById('filePicker').onchange = function() { 
 
    var currentFile = this.files[0]; 
 
    
 
    if (isSame(previousFile, currentFile) === false) { 
 
    alert('New File!'); 
 
    previousFile = currentFile; 
 
    } 
 
};
<input type="file" id="filePicker">

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