无法在javascript jquery中清除input type = file

时间:2012-08-08 14:29:47

标签: javascript jquery asp.net input

  

可能重复:
  Clearing <input type='file' /> using jQuery

这是我的代码:

 <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/>");

以及网络上的许多其他人但没有成功。

3 个答案:

答案 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(''); 
});