从输入类型中删除所选文件 = IE 中的文件
Remove selected file from Input type = File in IE
如何清除IE中选择的文件
以下示例适用于 chrome 但不适用于 IE(任何版本)
HTML
<input id="file1" type="file" class="" multiple="" required="" accept="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" />
Jquery
$("#fileUpload").val('');
果然IE不支持这个。
您可以使用以下 IE 解决方法
$("#image").remove("");
$("form").append(' <input id="image" type="file" name="image"/>');
fiddle- http://jsfiddle.net/nfvR9/25/
我最终做如下:
function reset_form_element(e) {
e.wrap('<form>').parent('form').trigger('reset');
e.unwrap();
}
然后调用函数如下:
reset_form_element($('#file1'));
输入文件列表是只读的,因此您不能从中删除任何文件,这就是为什么 IE 不支持清除输入值的原因。
我会扩展 jQuery 以获得 "clearFiles" 的方法。 jQuery 贬值 jQuery.browser 为 1.9,这就是为什么我要检查浏览器是否是带有变量的 IE。
函数扩展:
$.fn.extend({
clearFiles: function () {
$(this).each(function () {
var isIE = (window.navigator.userAgent.indexOf("MSIE ") > 0 || !! navigator.userAgent.match(/Trident.*rv\:11\./));
if ($(this).prop("type") == 'file') {
if (isIE == true) {
$(this).replaceWith($(this).val('').clone(true));
} else {
$(this).val("");
}
}
});
return this;
}
});
使用:
$('#test').click(function () {
$("[type='file']").clearFiles();
});
这里是fiddle。
fiddle
非常感谢 Amit.rk3 的回答,我修改了他的回答(我会把它放在评论中,但我没有 50 分!!)。 OP 确实说清除了一个选定的文件,所以我会假设一个输入。我有一个相当长且复杂的页面,所以我想非常具体地说明要重置哪个输入。下面的代码在 IE(8) 和 FF ESR 上运行完美:)
Select Photo(optional): <span id="form_sp"><input id="file" type="file" size="40" name="photo"/></span> <button id="reset_t">Reset file</button>
<script>
$(document).ready(function(){
$('#reset_t').click(function(e) {
e.preventDefault(); // keeps form from submitting
$("#form_sp").html('');
$("#form_sp").html('<input id="file" type="file" size="40" name="photo"/>');
});
});
</script>
如何清除IE中选择的文件
以下示例适用于 chrome 但不适用于 IE(任何版本)
HTML
<input id="file1" type="file" class="" multiple="" required="" accept="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" />
Jquery
$("#fileUpload").val('');
果然IE不支持这个。
您可以使用以下 IE 解决方法
$("#image").remove("");
$("form").append(' <input id="image" type="file" name="image"/>');
fiddle- http://jsfiddle.net/nfvR9/25/
我最终做如下:
function reset_form_element(e) {
e.wrap('<form>').parent('form').trigger('reset');
e.unwrap();
}
然后调用函数如下:
reset_form_element($('#file1'));
输入文件列表是只读的,因此您不能从中删除任何文件,这就是为什么 IE 不支持清除输入值的原因。
我会扩展 jQuery 以获得 "clearFiles" 的方法。 jQuery 贬值 jQuery.browser 为 1.9,这就是为什么我要检查浏览器是否是带有变量的 IE。
函数扩展:
$.fn.extend({
clearFiles: function () {
$(this).each(function () {
var isIE = (window.navigator.userAgent.indexOf("MSIE ") > 0 || !! navigator.userAgent.match(/Trident.*rv\:11\./));
if ($(this).prop("type") == 'file') {
if (isIE == true) {
$(this).replaceWith($(this).val('').clone(true));
} else {
$(this).val("");
}
}
});
return this;
}
});
使用:
$('#test').click(function () {
$("[type='file']").clearFiles();
});
这里是fiddle。 fiddle
非常感谢 Amit.rk3 的回答,我修改了他的回答(我会把它放在评论中,但我没有 50 分!!)。 OP 确实说清除了一个选定的文件,所以我会假设一个输入。我有一个相当长且复杂的页面,所以我想非常具体地说明要重置哪个输入。下面的代码在 IE(8) 和 FF ESR 上运行完美:)
Select Photo(optional): <span id="form_sp"><input id="file" type="file" size="40" name="photo"/></span> <button id="reset_t">Reset file</button>
<script>
$(document).ready(function(){
$('#reset_t').click(function(e) {
e.preventDefault(); // keeps form from submitting
$("#form_sp").html('');
$("#form_sp").html('<input id="file" type="file" size="40" name="photo"/>');
});
});
</script>