我修改了當前表單,在用戶選擇要上傳的文件後觸發表單提交。上傳完成後,我致電:爲什麼IE不重置文件輸入欄?
$('#file').val('');
重置文件輸入字段。
HTML
<input name="file" type="file" id="file"/>
這適用於Chrome,FF和Safari,但在IE中不起作用。有沒有解決方法或更好的解決方案?
我修改了當前表單,在用戶選擇要上傳的文件後觸發表單提交。上傳完成後,我致電:爲什麼IE不重置文件輸入欄?
$('#file').val('');
重置文件輸入字段。
HTML
<input name="file" type="file" id="file"/>
這適用於Chrome,FF和Safari,但在IE中不起作用。有沒有解決方法或更好的解決方案?
您無法更改文件輸入類型的值,因爲這會引入安全漏洞。相反,只需用新文件替換文件輸入即可。取而代之的$('#file').val('')
,這樣做:
$('#file').replaceWith('<input name="file" type="file" id="file"/>');
更妙的是克隆的原始版本的副本,並將其存儲在內存中。當你需要替換它時,只需使用克隆副本,然後再克隆它。所以,這樣的事情:
$(document).ready(function() {
var empty_input = $('#file').clone();
$('#the-form').on('change', '#file', function(el) {
$('#the-form').submit(); // assuming the target is a hidden iframe
$(this).replaceWith(empty_input.clone());
});
})
請注意,我使用委派的版本jQuery.on()因此事件仍然會在它的更換右後新的輸入工作。
這很好...我從來沒有考慮過安全風險,謝謝! – Paul
這是我正在尋找.. thnks人 –
這是這樣的一個副本:[使用jQuery清除](http://stackoverflow.com/questions/1043957/clearing-input-type-file-using-jquery) – jabclab
@ jabclab so wat?那個問題。 dsnt有任何接受的答案......這個任務給了我解決方案。 –