file input出于安全角度,是不允許賦值的,即使是置空,雖然通過(guò)給outerHtml賦值可以清空,但貌似僅在ie下起使用。
因?yàn)槿鄙僦每盏姆椒?,用戶異步上傳完畢文件后選擇相同文件時(shí),不會(huì)觸發(fā)change,因?yàn)樵谶@種情況下,我們沒(méi)有辦法使value(也就是文件路徑)發(fā)生變化。
那難道就無(wú)解了么。。當(dāng)然不是。。
我的解決方法是,每次選完文件,就重建此元素,這樣值自然是空的,因?yàn)閏lone不帶值,這樣就是一個(gè)全新的file input,每一次選擇,自然各種正常。使用unbind().以下是關(guān)鍵代碼:
<script type="text/javascript">
function upload(){
$("#imgFile").click();
$("#imgFile").unbind().change(function(){
$("#fileForm").submit();
})
}
</script>
<form id="fileForm" action="${basePath}/emp/imgupload" method="post" enctype="multipart/form-data">
<input name="imgFile" id="imgFile" type="file" accept="image/*" style="display: none"/>
<input type="button" value="圖片上傳" οnclick="upload()">
</form>