如何在单击文件上载时仅显示pdf,doc,docx格式

时间:2014-01-20 09:14:03

标签: html html5 input

我试图通过我的代码阻止除doc,docx和pdf之外的所有扩展名,就像只接受google chrome一样

这是我的代码:

<input type="file" id="filedocxpdf" name="filedocxpdf" class="txtNotice" accept="application/pdf,application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document"/>

2 个答案:

答案 0 :(得分:2)

这可能有助于你!

Javascript解决方案

var myfile="";

$('#button_id').click(function( e ) {
    e.preventDefault();
    $('#filedocxpdf').trigger('click');
});

$('#filedocxpdf').on( 'change', function() {
   myfile= $( this ).val();
   var ext = myfile.split('.').pop();
   if(ext=="pdf" || ext=="docx" || ext=="doc"){
       alert(ext); return true;

   } else{
       alert(ext); return false;
   }
});

替代解决方案2

<script type="text/javascript" language="javascript">
function checkfile(sender) {
    var validExts = new Array(".docx", ".doc", ".pdf");
    var fileExt = sender.value;
    fileExt = fileExt.substring(fileExt.lastIndexOf('.'));
    if (validExts.indexOf(fileExt) < 0) {
      alert("Invalid file selected, valid files are of " +
               validExts.toString() + " types.");
      return false;
    }
    else return true;
}
</script>

<input type="file" id="filedocxpdf" onchange="checkfile(this);" />

答案 1 :(得分:1)

其他浏览器会忽略这样的接受属性,例如 例如,Firefox支持一些简单的情况,如accept =“image / gif”。

您需要创建一个Javascript解决方案来检查文件扩展名:

var file = document.getElementById('someId');

file.onchange = function(e){
    var ext = this.value.match(/\.([^\.]+)$/)[1];
    switch(ext)
    {
        case 'jpg':
        case 'bmp':
        case 'png':
        case 'tif':
            alert('allowed');
            break;
        default:
            alert('not allowed');
            this.value='';
    }
};

示例Here