2017-11-18 10 views
0

私は<input type="file" />.のボタンテキストを変更するのにthis solutionを使用しますが、それは機能しますが、小さな欠点があります。ファイルが選択された後、ユーザーは選択されたファイル表示されません(元のボタンで隠されています)。元の(非表示の)ボタンを表示せずにこの情報を表示するにはどうすればいいですか?隠し入力からテキストをキャプチャして表示する

コード:

<input type="button" id="loadFileXml" value="loadXml" onclick="document.getElementById('file').click();" /> 
<input type="file" style="display:none;" id="file" name="file"/> 
+0

divを作成し、 'ファイル'の情報入力のプロパティ:https://stackoverflow.com/questions/26082721/how-to-display-selected-file-names-before-uploading-multiple-files-in-struts2 – yuriy636

+0

@lurie答えを確認します。あなたが何かを期待したら教えてください –

答えて

1

あなたはファイルのあなたのinput型の値に無いことで、テキスト、その後updateその値でspanを作成することができます。

function showFileName(){ 
 
document.getElementById("fileName").innerHTML = document.getElementById("file").files[0].name 
 

 
}
<input type="button" id="loadFileXml" value="loadXml" onclick="document.getElementById('file').click();" /> 
 
<span id="fileName"></span> 
 
<input type="file" onChange="showFileName()" style="display:none;" id="file" name="file"/>

+0

これは動作します。唯一の問題は、選択したファイル名の前の "C:\ fakepath \"部分です。私はUbuntuで働いているので、Windowsシステムに何が表示されるのか分かりません。ファイル名(拡張子付き)だけを保持できますか? – Iurie

+0

これは両方の環境で同じになります。とにかく、ファイル名のみを印刷するコードを編集しました。 –

+0

@lurie、質問を解決した場合は、受け入れてupvoteしてください –

1

ような何かあなたがあなたの目に見える入力下のプレースホルダ要素を追加することができます。そして、

<p id="file_path"></p> 

(私はこの部分のためにjQueryを使用)、イベント側:

​$('#file').change 
(
    function(e) 
    { 
     $('#file_path').text(e.target.files[0]); 
    } 
);​​​ 
+0

私はそれが動作するようにすることはできません。私はDeveloper Tools Consoleでこのメッセージを受け取ります: 'Uncaught SyntaxError:無効または予期しないトークン'。 – Iurie

+0

申し訳ありませんが、修正されました:O –

関連する問題