2013-04-21 43 views
2

我有一個表單,允許使用文件輸入來加載文件。我想讓用戶刪除上傳項目,但我無法弄清楚。這裏是我試圖到目前爲止做:如何從表單中刪除上傳項目?

<form action="insert.php" method="POST" align="right" id="post_form"> 
<input type="file" id="upload_file" onChange="display()"> 
<div id="show_button" onClick="remove_pic()"> remove </div><br> 
</form> 


function remove_pic() { 
    alert('check'); 
    var file_loaded = document.getElementById("upload_file"); 
    file_loaded = null; // here i try to remove the object 
} 

回答

1

運行後通過的jsfiddle你的代碼,並檢查Chrome的開發者控制檯中,我不停收到錯誤消息「沒有定義功能」。

我發現明確地把你試圖調用的函數直接調用到全局範圍中,使它被識別爲已定義。您還需要使用空字符串而不是null,並將「.value」屬性的更改附加到「file_loaded」變量。

而不是

function remove_pic() { 
    alert('check'); 
    var file_loaded = document.getElementById("upload_file"); 
    file_loaded = null; // here i try to remove the object 
} 

嘗試

window.remove_pic = function() { 
    alert('check'); 
    var file_loaded = document.getElementById("upload_file"); 
    file_loaded.value = ""; // here i try to remove the object 
}; 

例的jsfiddle:http://jsfiddle.net/xu6SD/1/

+0

喜,acctually我不得不這樣做是.value的添加到file_loaded。你能解釋一下爲什麼你會這樣寫:「window.remove_pic = function()」我的意思是這條線的含義是什麼? – 2013-04-21 19:13:33

+0

它可能只是JSFiddle的一個怪癖,但似乎我必須明確地將函數放到全局範圍內才能工作。據我所知,編寫「window.remove_pic = function()」只是將函數放入全局範圍的明確方法。我也從[JavaScript:The Good Parts]中選取了「var functionName = function()」(http://www.amazon.com/JavaScript-Good-Parts-Douglas-Crockford/dp/0596517742) - 他的論點是它使得函數的定義更加清晰易讀。很高興它的工作,但! :) – 2013-04-21 19:22:58