2013-08-21 28 views
4

我想上傳一個文件,並且我想阻止用戶選擇錯誤格式的文件。所以我使用jQuery腳本來驗證文件擴展名。jQuery檢查文件擴展名不工作在IE

這裏是輸入

<input id="uploadCV" type="file" name="uploadCV" accept="application/pdf" /> 

這裏是jQuery腳本

if ($("#uploadCV").val().split(".")[1].toUpperCase() == "PDF") 
{ 
    return true; 
} 
else{ 
    return false; 
} 

此代碼的Firefox只是罰款,但在IE不會。這是因爲在IE中$("#uploadCV").val()中的文件名不包含擴展名,例如它包含\directory\filename而不是\directory\filename.pdf

有沒有人遇到過這樣的事情?有沒有解決方法?

+1

什麼版本的IE? – epascarello

+0

我檢查了IE8和IE9 – kbaccouche

回答

3

我已經測試了這個IE9,我現在沒有IE8測試, 這個函數也考慮最後一個點,在你的解決方案中,如果文件名包含像this.is這樣的點,那麼擴展會是錯誤的。 a.pdf.pdf

檢查出這個小提琴: http://jsfiddle.net/HN7Ww/1/

$('#sendMe').click(function() { 
    var file = $("#uploadCV").val(); 
    if (file.substr(file.lastIndexOf('.') +1).toUpperCase() == "PDF") 
    { 
     $('.result').html('valid'); 
    } 
    else 
    { 
      $('.result').html('not valid'); 

    } 
}); 

<input id="uploadCV" type="file" name="uploadCV" accept="application/pdf" /> 
<div class="result"></div> 
<input type="button" id="sendMe" value="send" /> 

讓我知道如果你需要任何進一步的幫助

問候 月

+0

哇它的工作。謝啦! – kbaccouche

0
$('#fileid').change(function (e) { 
    var ext = this.value.match(/\.(.+)$/)[1]; 
    if(ext.toLowerCase() !== "pdf") 
    { 
     alert("Only Pdf format supported"); 
     e.preventDefault(); 
     if ($.browser.msie) { 
      $('#fileid').replaceWith($('#').clone()); // This makes file selected to null in IE 
     } 
     else { 
      $('#fileid').val(""); 
     } 
    } 

}); 

這將使如果選擇非PDF文件,並顯示警告清除的選擇,如果你選擇非pdf文件。