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

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

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

CoffeeScriptはプログラミング言語です。シンタックスシュガーの導入により、JavaScriptのコードに変換された後動作します。JavaScriptに比べ、可読性と簡潔性が向上しています。

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

JavaScript

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

Q&A

解決済

2回答

1681閲覧

【java script】モーダルウインドウ上でスクリプトを実行させるには

pecchan

総合スコア592

CoffeeScript

CoffeeScriptはプログラミング言語です。シンタックスシュガーの導入により、JavaScriptのコードに変換された後動作します。JavaScriptに比べ、可読性と簡潔性が向上しています。

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

JavaScript

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

0グッド

0クリップ

投稿2020/07/07 04:55

Rails5.2で検索画面を作っているところです。

検索条件の入力部分を、パーシャルにしてモーダルウインドウとして切り出しました。
一覧画面にて、ボタンを押すとモーダルウインドウは表示されます。

困っていること
モーダルウインドウ上でスクリプトが動作しません。
※実行したいタイミングは、select boxチェンジ時

確認したこと
・スクリプト自体には問題なく、他の画面で動作確認済みです。
・モーダル表示前にブラウザ上で右クリック→「ソースの表示」を行うと当然select boxはまだ存在しません。ですが表示後に同様でも存在しません。ちなみに「検証」からだと確認できました。

以上のことから
スクリプト読み込み時に「select boxが生成されていないため認識できない」のが原因かなと予想してます。
見当違いでしたらごめんなさい。

モーダル上でスクリプトを実行するには、どのような方法があるのでしょうか?

以下からソースです↓

/app/views/items/index.html.erb

ruby

1<%= link_to '詳細検索', items_path, remote: true, class: "btn btn-primary" %> 2<div id="search-modal" class="modal fade" tabindex="-1" role="dialog" aria-hidden="true"></div> 3

上記で生成されるhtml。

html

1<a class="btn btn-primary" data-remote="true" href="/items">詳細検索</a> 2<div id="search-modal" class="modal fade" tabindex="-1" role="dialog" aria-hidden="true"></div> 3

モーダルウインドウ側
/app/views/items/_search.html.erb

ruby

1 <select class="select-parent" name="item[category_id]" id="item_category_id"> 2 <option value="">選択して下さい</option> 3 <option data-children-path="/categories/1/sub_categories" value="1">選択項目1</option> 4 </select> 5

スクリプト

coffeescript

1$(document).on 'turbolinks:load', -> 2 test = -> 3 alert("こんにちは") 4 $('.select-parent').on 5 'change': test

ちなみに、モーダルウインドウ上で右クリック→「ソースの表示」とやっても、
背景側(一覧画面)と同じソースが表示されるんですね。

以上です。

諸先輩方どうかアドバイス宜しくお願いします。

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

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

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

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

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

guest

回答2

0

CSSフレームワークを使っていますか?
そうなのであれば、フレームワーク側に解決策が用意されているかもしれません。
フレームワークのモーダルのドキュメントをお読みになるといいかもしれません。

投稿2020/07/07 07:15

Cojiro

総合スコア539

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

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

pecchan

2020/07/07 07:23

有難う御座います。 Bootstrapを使っています。 ドキュメント参照してみます!
Cojiro

2020/07/07 07:36

今簡単にbootstrapのモーダル上でセレクトボックス のチェンジイベントの動作を確かめましたが、正常にevent発砲をキャッチしました。 もしかしたら、JSの読み込み順かもしれません。
pecchan

2020/07/07 23:05

検証までしていただき有難う御座います。 Jsの読み込み順の可能性があるんですね! 現在は、javascripts配下に置いただけで何も指定してません。 なので、turbolinkがひとまとめにしてる→最初の方(DOM作成前)で実行されている?うーん、分からない・・・。 railsでJsの読み込み順の変え方を調べてみます。 ちなみにbootstrapの公式には、マニュアルだけで回避策みたいな情報は特に見当たりませんでした。
pecchan

2020/07/08 21:57

bootstrapのモーダルを使えば、すぐに実現できました。 今回のモーダル部分は以下を参考にしてたのですが、単純なbootstrapのモーダルでなく、プラスrenderとかしてたのが原因だったのかと思います。 https://qiita.com/niwaken/items/ffbce52fb024fd369f24 なぜこんなややこしい方法されてるのか今では意図が分かりません。 「rails モーダル」 でググって出てきたこちらを何も考えず流用した次第でした。 何度もお付き合いいただき有難う御座いました。
guest

0

ベストアンサー

modalを初めからhtmlに非表示仕込んでおき、ボタンを押すと表示されるようにする方法があります。

あと
$(document).on('change','.select-parent')
とすると後から出来た要素にも反応するとどっかで読んだ覚えが有りますが。JS弱いので自信有りません

投稿2020/07/07 05:21

winterboum

総合スコア23567

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

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

pecchan

2020/07/07 07:05

いつも有難う御座います。 始めに非表示にしておく方法→調べていますが、また見つかってません。 Js、ほんと良く分かりません(泣) 進展しましたら、また報告させていただきます。
pecchan

2020/07/08 21:54

いつも有難う御座います。 私もJsはよく分からないので、 modalを初めからhtmlに非表示仕込んでおき、ボタンを押すと表示する方法にしました。 bootstrapのモーダルを使えば、すぐに実現できました。 今回のモーダル部分は以下を参考にしてたのですが、単純なbootstrapのモーダルでなく、プラスrenderとかしてたのが原因だったのかと思います。 https://qiita.com/niwaken/items/ffbce52fb024fd369f24 なぜこんなややこしい方法されてるのか意図が分かりませんが、 これがrailsでモーダルを作る方法なんだと思って流用した所でした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問