質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

1回答

3382閲覧

input[type=”file”]にて選択したファイル名を表示したい。一つのページに複数あり。

退会済みユーザー

退会済みユーザー

総合スコア0

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

0クリップ

投稿2021/05/15 03:19

編集2021/05/15 03:30

input[type=”file”]の装飾をしています。

input要素は非表示にして、
代わりに、label要素に画像をあてて、
画像をボタンとして見立てています。

その上で、選択したファイル名を表示させる為に、
Javascriptで対応しようと思いました。

条件は、1つのページ内に
複数のinput[type=”file”]があります。

実現したいことは、
input[type=”file”]がクリックされたときに、
隣接している<div>要素にファイル名を表示したいです。
※トリガーとなる要素や、div要素にはとくにこだわりはありません。

どうぞよろしくお願い致します。

余談ですが、
1つのページ内に、1つのinput[type=”file”]は別コードで実現できました。

html

1<div> 2 3<div> 4<label class='camera' for='camera0'> 5<input type="file" id='camera0' name='File'> 6</label> 7<div>ファイルが未選択です</div> 8</div> 9 10<div> 11<label class='camera' for='camera1'> 12<input type="file" id='camera1' name='File'> 13</label> 14<div>ファイルが未選択です</div> 15</div> 16 17</div>

jquery

1$('input[type=file]').change(function() { 2var This = $(this); 3var file = $(this).prop('files')[0]; 4$(this).find('div').text(file.name); 5});

css

1.camera { 2background-image: url("../img/camera.svg"); 3width: 36px; 4height: 36px; 5display: block; 6} 7.camera input { 8display: none; 9}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

itagagaki

2021/05/15 03:26

.camera input { display: none; } のせいでボタンが無く、ファイルを選ぶことができないですが、これはどういう意図ですか? これを消してボタンを押してファイルを選んだらファイル名が表示されましたが、それは意図したこととは違うのですか?
退会済みユーザー

退会済みユーザー

2021/05/15 03:36

input要素は非表示にして、 代わりに、label要素に画像をあてて、 画像をボタンとして見立てている意図になります。 ありがとうございます。追記いたしました。
guest

回答1

0

ベストアンサー

$(this).parent().parent().find('div').text(file.name);とするとどうですか。

投稿2021/05/15 03:30

Lhankor_Mhy

総合スコア36960

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2021/05/15 03:35

修正後、ファイルを選択しても、「ファイルが未選択です」で変わりませんでした。 ありがとうございます。
Lhankor_Mhy

2021/05/15 03:42

当方では問題なく動作しました。
退会済みユーザー

退会済みユーザー

2021/05/15 03:44

ありがとうございます。これからやってみます。
itagagaki

2021/05/15 03:44

<div class="filename">ファイルが未選択です</div> $(this).parent().parent().find('div.filename').text(file.name); こういうことですね。
退会済みユーザー

退会済みユーザー

2021/05/15 03:51

ありがとうございます。 code penで検証したらできました。 お騒がせいたしました。 itagakiさんもありがとうございました。理解がすすみました。
退会済みユーザー

退会済みユーザー

2021/05/15 03:58

できました!改めてありがとうございました。 余談ですが、最初にうまくできなかった理由は、 JSの読み込みの順番でした。 一部、PHPでHTMLを生成しています。
Lhankor_Mhy

2021/05/15 08:06

お役に立てたようで何よりです。 itagagakiさん、補足ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問