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

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

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

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

Bootstrap

BootstrapはウェブサイトデザインやUIのWebアプリケーションを素早く 作成する可能なCSSフレームワークです。 Twitter風のデザインを作成することができます。

Thymeleaf

Thymeleaf(タイムリーフ)とは、Java用のテンプレートエンジンで、特定のフレームワークに依存せず使用することが可能です。

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

Q&A

解決済

1回答

1684閲覧

ループで表示内容を回しているセレクトのデータを、BootStrapのモーダルに表示させたい

kazu5942

総合スコア6

JavaScript

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

Bootstrap

BootstrapはウェブサイトデザインやUIのWebアプリケーションを素早く 作成する可能なCSSフレームワークです。 Twitter風のデザインを作成することができます。

Thymeleaf

Thymeleaf(タイムリーフ)とは、Java用のテンプレートエンジンで、特定のフレームワークに依存せず使用することが可能です。

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

0グッド

0クリップ

投稿2020/09/08 06:34

前提・実現したいこと

ループさせてデータを表示させているセレクトタグで選択された内容を、一つのボタン押下時に呼び出されるモーダル内に表示させたいのですがデータの受け渡しがされずに困っています。どのような方法でデータを取得できるのか教えていただきたいです。

発生している問題・エラーメッセージ

モーダルにデータが渡らない。渡し方がわからない。

試したThymeleafのコード

<form th:action="@{/tablet-visitor/select-user}" class="form-inline justify-content-center needs-validation" method="post" novalidate> <div class="form-inline"> <div class="search-box form-group mb-2 ml-2"> <select class="chosen-select form-control" id="emp"> <option value="" style="font-weight: 100;">部署選択</option> <option th:each="dep:${dlist}" th:text="${dep.deployment_name}" th:value="${dep.id}"></option> </select> </div> <div class="form-group mb-2 ml-2 mr-5"> <select class="chosen-select form-control list" th:name="emp" required> <option value="">氏名選択</option> <option class="list_item" th:each="user:${ulist}" th:text="${user.emp_name}" th:data-emp="${user.deployment_id}" th:value="${user.id}" th:data-mail="${user.empMail}" th:data-name="${user.emp_name}" data-target="#tabModal"></option> </select> </div> </div> <div class="ml-1 mt-5"> <a class="btn btn btn-primary text-center deletemodalbtn open-AddBookDialog text-light" data-toggle="modal" data-target="#tabModal">入力完了 </a> <div class="modal fade" id="tabModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalCenterTitle" aria-hidden="true"> <div class="modal-dialog modal-dialog-centered" role="document"> <div class="modal-content"> <div class="modal-header"> <h5 class="modal-title" id="exampleModalCenterTitle">担当者確認画面</h5> <button type="button" class="close" data-dismiss="modal" aria-label="Close"> <span aria-hidden="true">&times;</span> </button> </div> <div class="modal-body"> <p>こちらの担当者であっていますか?</p> メールアドレス: <p id="mail-mail"></p> 担当者名: <p id="name-name"></p> </div> <div class="modal-footer"> <a href="" type="button" class="btn btn-secondary" data-dismiss="modal">キャンセル</a> <button type="submit" class="btn btn-primary">OK</button> </div> </div> </div> </div> </div> </form>

試したJavaScript

$('#tabModal').on('show.bs.modal', function(event) { var button = $(event.relatedTarget) //モーダルを呼び出すときに使われたボタンを取得 var mail = button.data('mail') //data-mail の値を取得 var name = button.data('name')//data-nameの値を取得 //Ajaxの処理はここに var modal = $(this) //モーダルを取得 modal.find('.modal-body p#mail-mail').text(mail) //pタグにも表示 modal.find('.modal-body p#name-name').text(name) });

試したこと

JavaScriptを用いてデータを取得しようと考えたのですが、th:data-mail="${user.empMail}" th:data-name="${user.emp_name}"がth:each="user:${ulist}"のループの外にあると、データを参照できず、中に入れようと考えてもボタンが複数できてしまい実現できませんでした。
何卒宜しくお願い致します。

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

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

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

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

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

guest

回答1

0

ベストアンサー

selectの実装で指摘事項があります。

html

1<select class="chosen-select form-control" id="emp"> 2 <option value="" style="font-weight: 100;">部署選択</option>

部署選択なのですから emp ではないかと。

html

1<select class="chosen-select form-control list" th:name="emp" required> 2 <option value="">氏名選択</option>

氏名なので、これも emp ではないのと、name属性は不適切です。

なお、HTML内のid属性は、他と重複してはいけません。

モーダルダイアログ起動時に実装されているJavaScriptが押したbuttonから名前や氏名を取得していますが、これは実装したいことと実装内容が違います。<select>で選んだ内容を取得したいのですから、ボタンとは関係なく、jQueryの$("#対象とする要素のid値")で要素を選べば良いでしょう。

投稿2020/09/08 13:08

A-pZ

総合スコア12011

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

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

kazu5942

2020/09/09 01:11

ご回答いただきまして誠にありがとうございます。に selectで選択された社員のメールと名前、二つのデータを送りたい場合、optionにvalueを二つ持たせることは可能なのでしょうか?selectの書き方と、jQueryの$("#対象とする要素のid値")についてもう少し詳しく教えていただけますでしょうか。
A-pZ

2020/09/09 08:00

selectは2つありますので、1つのoptionに2つのvalueをつけるのも良くありません。ボタンを押したときに現在selectで選ばれている値をそれぞれ取得すればよいのですから、ボタンから値を取得するのではなく、jQueryの$("#要素id")で取得すればよいです。jQueryの要素を取得する方法については、さまざまなドキュメントがありますのでお好みのものをお使いください。 jquery id セレクタ で検索されると良いでしょう。
kazu5942

2020/09/11 00:05

th:dataに持たせることで解決させることができました!ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問