Html Internet Explorer中属性“accept”的字段过多

Html Internet Explorer中属性“accept”的字段过多,html,Html,我想指定可以上载谁的文件,例如,仅证书。在Firefox和Chrome中,这种行为是可以的,但当我尝试在IE中指定文件类型时,有两个附加字段:图像和html。为什么?我想把它们拿走 代码是: 由于IE用户可以通过选择“所有文件”来添加其他格式,甚至可以从其他浏览器添加其他格式,因此我建议您使用javascript和jquery对用户添加文件后添加的文件类型进行检查。下面的代码检查用户是否添加了具有您接受的扩展名之一的文件,如果没有,则会发出消息提醒,用户必须再次选择文件 代码: JSFiddl

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

代码是:


由于IE用户可以通过选择“所有文件”来添加其他格式,甚至可以从其他浏览器添加其他格式,因此我建议您使用javascript和jquery对用户添加文件后添加的文件类型进行检查。下面的代码检查用户是否添加了具有您接受的扩展名之一的文件,如果没有,则会发出消息提醒,用户必须再次选择文件

代码:

JSFiddle:

资料来源:


看看@CBroe——这个wiki页面已经过时了,它甚至在顶部有一个关于它的警告。英文版更好:为什么我有额外的字段图像和Html?我没有在任何地方指定它们。但它们是存在的。
// 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>