前提・実現したいこと
ruby on rails で作成した検索機能(form_tag使用)の中に、JQueryを使用した検索機能を埋め込んでいます。
一部の検索項目のみ、検索項目ボタン(例:都道府県)を押下するとモーダルが表示され、モーダル内にチェックボックスを用意しています。
現在、それまでの検索条件を引き継ぐため、以下のようにボタン押下時にURLからパラメータを取得し自動的にチェックされる機能を作成しましたが、
この機能があるために、「条件クリアボタン」でチェックを解除できていません。
また、現状実装している条件クリアボタンでは、form_tag内に直接埋め込まれているチェックボックスをチェック解除できるだけで、
当然モーダル内のチェックボックスは解除できません。
条件クリアボタンが押下された際は、現在のURLでなく'/index?'からパラメータを取得する、あるいはパラメータをリセットすることにより、
その次に検索項目ボタンを押した際は全てのチェックボックスがチェックされていない状態としたいのですが、どうすれば良いでしょうか。
発生している問題・エラーメッセージ
以下の通り、条件クリアボタンを押下しても、その後'.btn-primary'というクラス名のついた検索項目ボタンを押下すると、 現状のページURLからパラメータを取得し、自動で当該都道府県をチェックしてしまっています。
該当のソースコード
JavaScript
1//パラメータの配列を定義 2var reqParams = { 3 hoge: [], 4 fuga: [], 5 prefecture: [] // prefecture_id 6} 7 8 9//現在のページからパラメータを取得 10var paramsString = location.search; 11var searchParams = new URLSearchParams(paramsString); 12var paramsPrefecture = searchParams.getAll("prefecture[]"); 13 14//検索項目ボタン押下時に自動で現在のパラメータを取得しチェック 15$('.btn-primary').click(function () { 16 var query = { 17 hoge: reqParams.hoge, 18 fuga: reqParams.fuga 19 } 20 $.get({ 21 url: '/top/ajax_prefecture_table.html', 22 data: query, 23 }).done(function (html) { 24 $('#prefecture-table').empty(); 25 $('#prefecture-table').html(html); 26 $(paramsPrefecture).each(function(index, val){ 27 $('input.prefecture[value=' + val + ']').each(function() { 28 $(this).prop("checked", true); 29 //その他の処理(略); 30 }); 31 }); 32 }); 33}; 34 35//条件クリアボタン 36var resetSelected = function() { 37 //現状ではform_tag内に直接埋め込まれているチェックボックスを全てチェック解除するコードを記述 38} 39 40
試したこと
閉じるボタン内で新たな変数を定義し、パラメータのないURLを代入してreturnした後、
その後の'.btn-primary'クリックではこのURLを参照できるようにすれば解決するのではないかと考えました。
JavaScript
1var resetSelected = function() { 2 //var newUrl = '/index'; 3}
あなたの回答
tips
プレビュー