清除Internet Explorer中的文件输入框

tsk*_*zzy 16 html javascript jquery internet-explorer file-upload

我的页面上有一个文件上传框和一个清除按钮.当我按下清除按钮时,我希望清除文件上传框中的文本.

以下适用于Firefox,但不适用于IE(文本保留在那里).这有解决方法吗?

$("#clear").click( function() {
    $("#attachment").val("");
    //document.myform.attachment.value = "";
})
Run Code Online (Sandbox Code Playgroud)

HTML:

<form name="myform">
    <input type="file" name="attachment" id="attachment" />
</form>
<br /><button id="clear">Clear Attachment</button>
Run Code Online (Sandbox Code Playgroud)

的jsfiddle

Max*_*axx 18

我发现的一个解决方案就是:

document.getElementById('myUploadField').parentNode.innerHTML = document.getElementById('myUploadField').parentNode.innerHTML;

似乎它应该不起作用,但确实如此.


sli*_*eed 14

这种解决方案比克隆输入元素更优雅.你<form>在元素周围换行,在表单上调用reset,然后使用unwrap()删除表单.与上面的clone()解决方案不同,您最终会得到相同的元素(包括在其上设置的自定义属性).

在Opera,Firefox,Safari,Chrome和IE6 +中测试和使用.也适用于其他类型的表单元素,但type ="hidden"除外.

http://jsfiddle.net/rPaZQ/

function reset(e) {
  e.wrap('<form>').closest('form').get(0).reset();
  e.unwrap();
}?
Run Code Online (Sandbox Code Playgroud)


and*_*dyb 9

它在IE8以后是只读的,所以你无法清除它.围绕此安全功能的最简单方法是使用副本替换元素.

编辑找到以前的答案,建议采用相同的方法!使用jQuery清除<input type ='file'/>