如何重置(清除)文件输入
how to reset (clear) file input
如何在IE中重置文件输入,我使用了以下方法,它在chrome和FF中工作,但在IE 中无效
fileInputElement.value=""
IE中有什么替代方案?
如果fileInputElement
以fileInputForm
的形式单独存在,则可以执行:
window.fileInputForm.reset();
否则,对于IE,您将不得不用克隆替换元素:
fileInputElement.parentNode.replaceChild(
fileInputElement.cloneNode(true),
fileInputElement
);
解决方案
下面的代码适用于我的jQuery。它适用于所有浏览器,并允许保留事件和自定义属性。
var $el = $(fileInputElement);
$el.wrap('<form>').closest('form').get(0).reset();
$el.unwrap();
演示
有关代码和演示,请参阅此jsFiddle。
链接
清除<输入类型="文件"/>使用jQuery
如何使用JavaScript 重置文件输入
@Gyrocode.com提供的跨浏览器解决方案
var clearFileInput = function (input) {
if (!input) {
return;
}
// standard way - works for IE 11+, Chrome, Firefox, webkit Opera
input.value = null;
if (input.files && input.files.length && input.parentNode) {
// workaround for IE 10 and lower, pre-webkit Opera
var form = document.createElement('form');
input.parentNode.insertBefore(form, input);
form.appendChild(input);
form.reset();
form.parentNode.insertBefore(input, form);
input.parentNode.removeChild(form);
}
}
您不能自行重置File输入。您可以做的是将File输入包装在<form id="form_id">
标记中并重置表单。使用jQuery,您可以执行$('#form_id')[0].reset();
,使用JavaScript,您可以进行document.getElementById('form_id').reset()
。
使用IE 10我用解决了问题
var file = document.getElementById("file-input");
file.removeAttribute('value');
file.parentNode.replaceChild(file.cloneNode(true),file);
其中:
<input accept="image/*" onchange="angular.element(this).scope().uploadFile(this)" id="file-input" type="file"/>
相关文章:
- Javascript,文件输入和FormData问题
- Javascript获取具有不同id的文件数's来自没有多个属性的文件输入元素
- 访问javascript文件输入变量的值
- 从IE中的不同元素调用时,文件输入控件未正确启动
- 多次打开多个文件输入,而不会丢失以前选择的文件
- jquery形成多文件输入字段Value()
- 如何从 Chrome 中的文件输入中删除“未选择文件”工具提示
- 如果从文件输入按钮调用 .ajaxSubmit() 时,它是必需的表单
- 生成由文件输入在特定时间选择的视频文件的缩略图/快照
- 使用javascript获取文件输入
- krajee引导程序文件输入上传
- on('change')不适用于动态添加的文件输入
- 选择要初始化精细上传器的文件输入
- 在DOM中以img的形式插入文件输入
- 单击跨度内的隐藏文件输入会导致RangeError
- 显示当前文件输入有文件后的下一个文件输入
- Krajee文件输入小部件'上传'方法引发异常
- 在引导文件输入中通过post发送一个额外的变量
- 引导文件输入
- 为什么在文件输入上触发点击事件也会在表单上触发提交事件