这是我的代码:
<input ID="fileUpload1" runat="server" type="file" style="width:275px; position:absolute; left:1px"/>
我尝试了一些解决方案:
$("input[type='file']").val('');
$('#DivfileUpload').replaceWith("<input class=VWButton ID=fileUpload1 runat=server type=file style=width:275px; position:absolute; left:1px/>");
以及网络上的许多其他人但没有成功。
答案 0 :(得分:9)
由于(显而易见的)安全原因,您无法设置文件输入的值。
如果要清除它,则需要重置其所在的表单。
用新的替换它也应该有效,但是使用有效的代码。 (这意味着不要尝试包含服务器端代码,例如ASP runat=server
属性/值,并引用不是普通单词的属性值(例如你的样式属性)。)
答案 1 :(得分:7)
出于安全原因,尝试使用.val(&#39;&#39;)设置值将在某些浏览器(例如IE)中失败。
您最好的选择是重置表单:
$('form').trigger('reset');
或者使用您的替换代码,稍作修改(确保HTML有效):
$('#fileUpload1').replaceWith('<input id="fileUpload1" type="file" style="width:275px; position:absolute; left:1px"/>');
如果使用CSS设置框的样式,则代码变得更加简单。
CSS:
#fileUpload1 {
width: 275px;
position: absolute;
left: 1px;
}
JavaScript:
$('#fileUpload1').replaceWith('<input id="fileUpload1" type="file"/>');
更高级的选项是在加载页面时隐藏文件上传框,然后创建一个向用户显示的克隆。当您需要清除它时,删除克隆,然后重新克隆原始隐藏的克隆。如果要允许用户上载多个文件,此方法还允许您创建输入框的多个副本。我将把实施细节留给您。 ;)
答案 2 :(得分:-1)
$(function() {
$('#fileUpload1').val('');
});