2010-12-17 4 views
1

私はいくつかの表示/非表示のセクションを持つフォームを持っています。ホームフォームのボタンを押すと、別のフォームが表示されます。私はそれらのフォームの情報を編集した後、私は最初のフォームに戻ります。しかし、show/hideセクションの状態はリセットされます。表示/非表示アクションはjqueryのトグルで行います。これらのセクションの状態は復帰時に保持する必要があります。 私はセッション変数に各セクションの状態を格納することを考えています。他にも解決策はありますか?この動作を別の場所、例えばミドルウェアなどで行う方が良いか可能でしょうか?jQuery/JavascriptでDjangoの表示/非表示の状態を保持する

答えて

1

あなたは本当にセッションストレージを必要としません。説明した場合、単一のクライアントのセクションの表示/非表示の状態をページ間で保持する必要があります。セッションは、サーバーが何か些細なことに関与しているので、過度の攻撃になります。

jQueryで直接localStorage(または本当に必要な場合はクッキー)を使用することになります。それはクライアント上に残り、サーバーは気にしません。

EDITのlocalStorageをチェックする

機能:

var canHazStorage = function() { 
    "use strict"; 
    try { 
     return 'localStorage' in window && window.localStorage !== null; 
    } catch(e) { 
     return false; 
    } 
}; 

あなたが値を設定するトグルコードを変更する必要があります:

$('#section1').toggle(); 

if (canHazStorage) { 
    if (is_shown) { // you'll need to write that yourself 
     window.localStorage['section1'] = true; 
    } else { 
     window.localStorage['section1'] = false; 
    } 
} else { 
    // same code using cookies 
} 

そして、init関数内を:

if (canHazStorage) { 
    var toggled = window.localStorage['section1']; 
    $('#section1').toggle(toggled); 
} else { 
    // same code using cookies 
} 
+0

例がありますか? – Seitaridis

+0

私が追加した例は、関数に作られるか、ループで使われるべきです... –

+0

ありがとう@passcod – Seitaridis

関連する問題