清算 使用jQuery

是否能夠使用jQuery清除<input type='file' />控制值? 我嘗試瞭如下方法: javascript

$('#control').attr({ value: '' });

但這不起做用。 html


#1樓

快速解答:更換它。 java

在下面的代碼中,我使用replaceWith jQuery方法將控件替換replaceWith自身的副本。 若是您有任何綁定到此控件上事件的處理程序,咱們也要保留這些處理程序。 爲此,咱們傳入true做爲clone方法的第一個參數。 編程

<input type="file" id="control"/>
<button id="clear">Clear</button>
var control = $("#control");

$("#clear").on("click", function () {
    control.replaceWith( control = control.clone( true ) );
});

小提琴: http : //jsfiddle.net/jonathansampson/dAQVM/ 瀏覽器

若是克隆在保留事件處理程序的同時出現任何問題,您能夠考慮使用事件委託來處理父元素對此控件的單擊: 安全

$("form").on("focus", "#control", doStuff);

這樣能夠避免在刷新控件時將任何處理程序與元素一塊兒克隆。 ide


#2樓

文件輸入的值是隻讀的(出於安全緣由)。 您不能以編程方式將其清空(除非經過調用表單的reset()方法,該方法的做用域不只限於該字段)。 this


#3樓

這適用於Chrome,FF和Safari spa

$("#control").val("")

可能不適用於IE或Opera .net


#4樓

在IE8中,爲了安全起見,他們將「文件上載」字段設爲只讀。 參見IE團隊博客文章

從歷史上看,HTML文件上傳控件()一直是大量信息泄露漏洞的根源。 爲了解決這些問題,對控件的行爲進行了兩項更改。

爲了阻止依賴於「竊取」擊鍵來暗中誘騙用戶在控件中鍵入本地文件路徑的攻擊,「文件路徑」編輯框如今爲只讀。 用戶必須使用「文件瀏覽」對話框明確選擇要上傳的文件。

此外,「 Internet區域」中的「上傳文件時包括本地目錄路徑」 URLAction已設置爲「禁用」。 此更改可防止將潛在敏感的本地文件系統信息泄漏到Internet。 例如,Internet Explorer 8如今僅提交文件名image.png,而不是提交完整路徑C:\\ users \\ ericlaw \\ documents \\ secret \\ image.png。


#5樓

這很簡單(在全部瀏覽器中都可使用[歌劇除外]):

$('input[type=file]').each(function(){
    $(this).after($(this).clone(true)).remove();
});

JS小提琴: http//jsfiddle.net/cw84x/1/

相關文章
相關標籤/搜索