2011-12-03 25 views
4

我修改了當前表單,在用戶選擇要上傳的文件後觸發表單提交。上傳完成後,我致電:爲什麼IE不重置文件輸入欄?

$('#file').val(''); 

重置文件輸入字段。

HTML 
<input name="file" type="file" id="file"/> 

這適用於Chrome,FF和Safari,但在IE中不起作用。有沒有解決方法或更好的解決方案?

+0

這是這樣的一個副本:[使用jQuery清除](http://stackoverflow.com/questions/1043957/clearing-input-type-file-using-jquery) – jabclab

+0

@ jabclab so wat?那個問題。 dsnt有任何接受的答案......這個任務給了我解決方案。 –

回答

6

您無法更改文件輸入類型的值,因爲這會引入安全漏洞。相反,只需用新文件替換文件輸入即可。取而代之的$('#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()因此事件仍然會在它的更換右後新的輸入工作。

+0

這很好...我從來沒有考慮過安全風險,謝謝! – Paul

+0

這是我正在尋找.. thnks人 –