2017-02-07 3 views
0

アップロードできるファイルを指定したいとします。たとえば、証明書enter image description hereのみを指定します。 FirefoxとChromeではこの動作は問題ありませんが、IEでファイルタイプを指定しようとすると、画像とHTMLという2つの追加フィールドがあります。どうして?私はそれらを取り除きたい。<Input>の超過フィールドは、Internet Explorerで "accept"という属性を受け取ります。

コードは次のとおりです。

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

+0

を見てみましょうhttp://stackoverflow.com/questions/2505334/accept-attribute-in-input-file-is-not-working – k97513

+0

@CBroe - そのウィキページは古くなっています(それについても警告があります) 。英語版はより良いです:https://developer.mozilla.org/en/docs/Web/HTML/Element/Input – Quentin

+0

なぜ私はadditinalフィールド "画像"と "Html"を持っていますか?私はどこにでもそれらを指定しなかった。しかし、彼らは存在します。 – goodgrief

答えて

0

それは「すべてのファイル」を選択しても、他のブラウザから、別の形式を追加しIEから誰かのために可能ですので、私があなたをお勧めしますjavascriptとjqueryを使用して、ユーザーがファイルを追加した後に追加されたファイルタイプのチェックを追加します。以下のコードは、ユーザーがあなたの受け入れられた拡張機能の1つでファイルを追加したかどうかをチェックし、そうでなければメッセージを警告し、ユーザーはファイルを再度選択する必要があります。

コード:

// 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/

出典:

関連する問題