ruby
1= form_for [@user] do |f| 2 = f.text_field :name 3 = f.submit 'Submit', { id: 'js-relod_submit' } 4 5 :javascript 6 var unloaded = function (e) { 7 e.returnValue = '離脱するとページが保存されない場合があります。' 8 }; 9 window.addEventListener('beforeunload', unloaded, false); 10 11 document.getElementById('js-relod_submit').addEventListener('click', function(){ 12 window.removeEventListener('beforeunload', unloaded, false); 13 });
実現したいこと
- hamlファイルに直書きしているjavascriptを、個別の~jsファイルに切り分けたい。
- 個別のjsファイルに切り分けた上で、window.addEventListenerを特定のviewファイルで発生させたい。
Railsアプリ内で、入力途中のformから移動する際、確認ダイアログを出す機能を実装していました。
現在、上記のように書き、機能自体は実装できたのですが、hamlファイルにjsコードを直接書いてしまっているため、個別の~jsファイルに切り出したいです。
個別のjsファイルに切り出した場合、全ての遷移時に、確認ダイアログが出てしまいます。
それは、全てのviewにおいてwindow.addEventListener('beforeunload', unloaded, false);
が発生してしまうからだと思うのですが、具体的な解決策がわかりません。
どうぞ、ご意見・アドバイス等頂けますようお願いいたします。
実行環境
Ruby 2.3.1
Rails 5.0.5
mysql Server version: 5.6.34
あなたの回答
tips
プレビュー