【问题标题】:Can't clear input type=file in javascript jquery [duplicate]无法清除javascript jquery中的输入类型=文件[重复]
【发布时间】:2012-08-05 16:41:09
【问题描述】:

可能重复:
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/>");

还有许多来自网络的其他人,但没有成功。

【问题讨论】:

标签: javascript jquery asp.net input


【解决方案1】:

出于(明显的)安全原因,您不能设置文件输入的值。

如果你想清除它,你需要重置它所在的表单。


用一个新的替换它也应该有效,但要使用有效的代码。 (这意味着不要尝试包含诸如 ASP runat=server 属性/值之类的服务器端代码,并且不要引用不是普通单词的属性值(例如您的样式属性)。

【讨论】:

  • 所以如果我用 div 包装输入 type=file 并使用第二个选项应该可以吗?
  • 您能否列出/解释安全原因?
  • @Satish — 人们将私人信息保存在他们计算机上的文件中。如果您访问的任何网站都可以读取这些文件,那么它就不会是非常私密的。
【解决方案2】:

出于安全原因,在某些浏览器(如 IE)中尝试使用 .val('') 设置值会失败。

您最好的选择是重置表单:

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

一个更高级的选项是在页面加载时隐藏文件上传框,然后创建一个向用户显示的副本。当你需要清除它时,你删除克隆,然后重新克隆原来隐藏的那个。如果您希望允许用户上传多个文件,此方法还允许您制作输入框的多个副本。我将把实现细节留给你。 ;)

【讨论】:

    【解决方案3】:
    $(function() { 
      $('#fileUpload1').val(''); 
    });
    

    【讨论】:

    • $(ID).val('');如果它应用于任何元素的有效事件中,这将起作用
    猜你喜欢
    • 2016-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-12
    • 1970-01-01
    • 1970-01-01
    • 2019-06-10
    相关资源
    最近更新 更多