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了相同的文件而不是如果你取消,它也会触发。