Internet Explorer 中 <Input> 属性“accept”的多余字段

Posted

技术标签:

【中文标题】Internet Explorer 中 <Input> 属性“accept”的多余字段【英文标题】:Excess fields of <Input> attribute "accept" in Internet Explorer 【发布时间】:2017-06-24 18:43:44 【问题描述】:

我想指定我可以上传哪些文件,例如仅证书。在 Firefox 和 Chrome 中,这种行为是可以的,但是当我尝试在 IE 中指定文件类型时,有两个附加字段:图像和 html。为什么?我想删除它们。

代码是:

&lt;input accept=".cer,.pem,.der" id="certRegField" name="user_cert" type="file"&gt;

【问题讨论】:

看看***.com/questions/2505334/… @CBroe — 那个 wiki 页面已经过时了(它甚至在顶部有一个警告)。英文版更好:developer.mozilla.org/en/docs/Web/HTML/Element/Input 为什么我有附加字段“图像”和“Html”?我没有在任何地方指定它们。但它们是存在的。 【参考方案1】:

由于 IE 中的某个人可以通过选择“所有文件”添加另一种格式,甚至是其他浏览器中的格式,我建议您添加一个检查在用户添加文件后添加的文件类型,使用javascript和jquery。下面的代码检查用户是否添加了具有您接受的扩展名之一的文件,如果没有,它会提醒一条消息并且用户必须再次选择一个文件。

代码:

// To add the jquery library:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>

// HTML:

<input accept=".cer,.pem,.der" id="certRegField" name="user_cert" type="file">

// Javascript:

<script type="text/javascript">

$(function()
  $('#certRegField').change(function()
    var url = $(this).val();
    var ext = url.substring(url.lastIndexOf('.') + 1).toLowerCase();
    if (!(ext == "cer" || ext == "pem" || ext == "der"))
      document.getElementById("certRegField").value = "";
      alert("Unaccepted file format, try again.");
    
  );
);

</script>

JSFiddle:http://jsfiddle.net/stN8U/222/

来源:

linking jquery in html onchange file input change img src and change image color

【讨论】:

以上是关于Internet Explorer 中 <Input> 属性“accept”的多余字段的主要内容,如果未能解决你的问题,请参考以下文章

CSS:不是 Internet Explorer 的解决方法

innerHTML 删除 Internet Explorer 中的属性引号

在 Internet Explorer 中播放 HTML 音频?

.InnerHTML 在 Internet Explorer 中无法正常工作

在 Internet Explorer 中替换 document.documentElement.innerHTML

Internet Explorer <= 9 中的 AngularJS $http.post 错误