2016-04-29 18 views
0

ユーザーが自分のレールのWebサイト上の別のページに移動した後にチェックボックスの状態を維持しようとしています。チェックボックスの状態が別のページに移動した後に変更される

現在、インデックスページから別のページに移動してインデックスページに戻ると、インデックスページのチェックボックスがオンになります。私は別のページに移動しても、私が与える価値を保持したい。

私はよくonloadイベント

$(document).ready(function() { 

    //Fixing the Turbolinks issue in rails with 'ready page:load' 
    $(document).on('ready page:load', function() { 
function addingChecks() { 
    var filterStatusArr = []; 
    filterStatusArr = localStorage.filterStatus; 
    $('#filterText h4 .onoffswitch .onoffswitch-checkbox').each(function() { 
     for (var i = 0; i < filterStatusArr.length; ++i) { 
      if (filterStatusArr[i] == "true") { 
       $(this).prop('checked', true); 
      } else { 
       $(this).prop('checked', false); 
      } 
     } 
    }); 
}; 

rememberFilterState(); 
addingChecks(); 
function rememberFilterState() { 

    filterStatus = []; 
    $('#filterText h4 .onoffswitch .onoffswitch-checkbox').each(function() { 
     if ($(this).is(':checked')) { 
      filterStatus.push("true"); 
     } else { 
      filterStatus.push("false"); 
     } 
     localStorage.input = filterStatus; 
    }); 
    //alert(filterStatus); 
} 

作品を書かれているが、私は別のページに移動して戻ってきたときに、これは無視します。

これは承認された動作ですか? これを修正するにはどうすればよいですか?

乾杯

答えて

0
設定するとき

あなたはlocalStorage.input内部rememberFilterStateに値を格納しますが、addingCheckslocalStorage.filterStatusから戻ってそれらを取得している、

お知らせ、JSON形式でのlocalStorage店、あなたはJSON.stringifyを使用する必要があります、JSON.parse値を取得する場合

以下でさらに最適化されたスニペットをご覧ください

予想通り
function addingChecks() { 
    if(!localStorage.filterStatus) { 
     return; 
    } else { 
     var filterStatusArr = JSON.parse(localStorage.filterStatus); 
     $('#filterText h4 .onoffswitch .onoffswitch-checkbox').each(function(index){ 
      $(this).val(filterStatusArr[index]); 
     }); 
    } 
}; 

function rememberFilterState() { 
    var filterStatus = []; 
    $('#filterText h4 .onoffswitch .onoffswitch-checkbox').each(function() { 
     filterStatus.push($(this).val()); 
    }); 
    localStorage.filterStatus = JSON.stringify(filterStatus); 
} 

$(document).ready(addingChecks); 
$(window).unload(rememberFilterState); 
+0

機能が動作しますが、私は、私は別のページからリダイレクトするとき、それは仕事をしたい... – Newbie

+0

チェックアウトの更新は、簡単なデモを作成するので、私はあなたが –

+0

// Turbolinks問題で固定するためのより良い答えをすることができます'ready page:load'のついたレール \t $(document).on( 'readyページ:load'、function(){ 私はターボリンクを処理する上記の行を持っています – Newbie

関連する問題