2012-03-08 79 views
31

下面是我有顯示文件輸入和一個「清除文件」按鈕的jQuery代碼的一部分。如何清除文件輸入

var $imagefile = $('<input />').attr({ 
    type: 'file', 
    name: 'imageFile', 
    class: 'imageFile' 
}); 

$image.append($imagefile); 

var $imageclear = $('<input />').attr({ 
    type: 'button', 
    name: 'imageClear', 
    class: 'imageClear', 
    value: 'Clear File' 
}); 

$image.append($imageclear); 

現在我有「清除文件」按鈕的原因是因爲如果你點擊按鈕,那麼它將清除文件輸入中的任何東西。我怎麼編碼它,以便它在我點擊「清除文件」按鈕時實際清除文件輸入?

+0

看到這個:http://stackoverflow.com/questions/1043957/clearing-input-type-file-using-jquery – 2012-03-08 12:41:53

+0

見這也https://forum.jquery.com/topic/how-要清除一個文件輸入即ie – 2015-07-21 15:02:51

回答

74

這應該工作:

$imageClear.on('click', function() { 
    $imageFile.val(''); 
}); 
+1

這是否也適用於IE ... – 2012-03-08 12:40:25

+0

是的,它是一個*相對簡單的* jQuery代碼。這是一個跨瀏覽器的解決方案。 – 2012-03-08 12:45:59

+2

爲了安全起見,在選擇文件後,''是'readonly',這裏是類似的[Q](http://stackoverflow.com/q/1043957/1548719)和記者[A](http://stackoverflow.com/a/1188853/1548719)提供的解決方案。 – 2012-08-01 07:36:52

5

這是我喜歡用爲好方法,但我相信你需要的BOOL TRUE參數添加到克隆方法,以便對任何事件保持與附新的對象,你需要清除內容。

var input = $("#fileInput"); 

    function clearInput() { 
     input = input.val('').clone(true); 
    }; 

https://api.jquery.com/clone/

-1

本工程以

$("#yourINPUTfile").val(""); 
5

清除文件輸入與jQuery

$("#fileInputId").val(null); 

清除文件輸入用JavaScript

document.getElementById("fileInputId").value = null; 
0

我做了這樣的事情,它的工作對我來說

$('#fileInput').val(null); 
0

另一種解決方案,如果你想成爲肯定的是,這是能夠跨瀏覽器是刪除()標籤,然後追加()或預先準備()或以某種其他方式重新添加具有相同屬性的輸入標記的新實例。

<form method="POST" enctype="multipart/form-data"> 
<label for="fileinput"> 
<input type="file" name="fileinput" id="fileinput" /> 
</label> 
</form> 

$("#fileinput").remove(); 
$("<input>") 
    .attr({ 
    type: 'file', 
    id: 'fileinput', 
    name: 'fileinput' 
    }) 
    .appendTo($("label[for='fileinput']"));