HTMLinput文件select事件在select相同的文件时不会触发

有没有机会检测到用户为HTMLtypes的file元素的input做出的每个文件select?

这被问了很多次,但是如果用户再次select相同的文件,通常build议的onchange事件不会被触发。

将每个onclick事件的input值设置为null 。 这将重置input的值并触发onchange事件,即使select了相同的path。

 input.onclick = function () { this.value = null; }; input.onchange = function () { alert(this.value); };​ 

这是一个DEMO

注意:如果你的文件的前缀是“C:\ fakepath \”,这是正常的。 这是一个安全function,可以防止JavaScript知道文件的绝对path。 浏览器仍然在内部知道它。

 <form enctype='multipart/form-data'> <input onchange="alert(this.value); this.value=null; return false;" type='file'> <br> <input type='submit' value='Upload'> </form> 

this.value=null; 只有Chrome才有必要,只要return false; ,Firefox会正常工作return false;

这是一个FIDDLE

在本文中,标题为“使用表单input进行select”

http://www.html5rocks.com/en/tutorials/file/dndfiles/

 <input type="file" id="files" name="files[]" multiple /> <script> function handleFileSelect(evt) { var files = evt.target.files; // FileList object // files is a FileList of File objects. List some properties. var output = []; for (var i = 0, f; f = files[i]; i++) { // Code to execute for every file selected } // Code to execute after that } document.getElementById('files').addEventListener('change', handleFileSelect, false); </script> 

它添加了一个事件监听器来“改变”,但是我testing了它,即使你select了相同的文件而不是如果你取消,它也会触发。