実現したいこと
selectの選択内容をjavascriptで保持したい
前提
カテゴリ1によって動的に値が変わるカテゴリ2があります。
カテゴリ1の内容はサーバー側で処理していますが、カテゴリ2は1の選択によって値が変わります。その為Sessionでは選択内容を保持してもできないのでlocalstrageを使用しようと思いましたが上手くいきません。
サーバー側はC#、MVCです
発生している問題・エラーメッセージ
エラーなし
該当のソースコード
JavaScript
1$(document).ready(function () { 2 $("#category1").change(function () { 3 var selectedCategory1 = $(this).val(); 4 localStorage.setItem("selectedValue", selectedCategory1); 5 6 $("#category2").empty(); 7 8 if (selectedCategory1) { 9 $.getJSON("/Home/GetCategory2Options", { category1: selectedCategory1 }, function (data) { 10 $("#category2").append('<option value="">' + "すべて" + "</option>"); 11 $.each(data, function (index, value) { 12 $("#category2").append("<option value='" + value + "'>" + value + "</option>"); 13 }); 14 }); 15 } 16 }); 17 18 $("#category2").change(function () { 19 var selectedCategory2 = $(this).val(); 20 localStorage.setItem("selectedValue2", selectedCategory2); 21 }); 22 }); 23 24 window.onload = function () { 25 // localStorageから保存された選択された値を取得 26 var selectedValue = localStorage.getItem("selectedValue"); 27 28 if (selectedValue !== null) { 29 $("#category1").val(selectedValue); // category1の選択状態を復元 30 31 $("#category2").empty(); // 一度リセットしてからオプションを追加 32 $.getJSON("/Home/GetCategory2Options", { category1: selectedValue }, function (data) { 33 var selectedCategory2 = localStorage.getItem("selectedCategory2"); 34 $("#category2").append('<option value="">すべて</option>'); 35 $.each(data, function (index, value) { 36 $("#category2").append("<option value='" + value + "'" + (value == localStorage.getItem("selectedCategory2") ? "selected" : "") + ">" + value + "</option>"); 37 }); 38 39 }); 40 } 41 }
試したこと
localstrage自体には値が入っていることが確認出来ましたがeachで参照している時はnullになっていました。
each分の中で直接localstrageを参照する場合も同様でした。
先にカテゴリ2をeachで復元してからvalueを選択する方法も試しましたがダメでした。
回答2件
あなたの回答
tips
プレビュー