2

ちょうど1日前にこの質問を投稿しました十分な答えがないため、独自のソリューションを見つけて構築しました。今、私は再び同様のプロセスを経る助けが必要です. ただし今回は、すべてのラジオ ボタン グループの状態をキャプチャ (「Base64」データとして Cookie に保存) し、リコール (ユーザーが戻ったときに再確認) する必要があります (明らかな理由から、「ID」ではなく「名前」で)。ページが読み込まれた後、必要に応じて、それらに関連付けられた対応するすべての onchange イベントをトリガーします。たとえば、ラジオ ボタン グループのラベルに「この住所に 3 年以上住んでいますか?」という質問があるとします。1 つのラジオ ボタン ラベルは「はい」と表示され、もう 1 つのラベルは「いいえ」と表示されます。ユーザーが「いいえ」を選択すると、追加の「アドレス」テーブル行がテーブルに表示されます。「いいえ」に表示されるテーブルのすべてのメカニズムチェック済み」はすでに行われています。

A:) フォーム上の任意のラジオ ボタンの「onchange」イベントで、すべてのラジオ ボタン グループの状態 (つまり、どれがチェックされているか) を記録します。

B:) その情報を JSON またはその他の記録保持に変換する

C:) ステップ [B:] の Base64 エンコード データ

D:) Cookie に保存する

ページのリロード時 (ユーザーがページに戻る)...

E:) Cookie からデータを取得する

F:) Base64 をデコードし、変数に割り当てます

G :) データから、最初にチェックされたものを再チェックしながら、すべてのフォームのラジオ ボタンを繰り返します。

簡単に聞こえますか?試してみる!私は....そしてまだです。

4

2 に答える 2

0

Cookie を保存しない場合の jQuery の基本は次のとおりです。

var radioState={};
$(':radio').each(function(){
    if(!radioState[this.name]){
        radioState[this.name]={};
    }    
    radioState[this.name][this.value]=this.checked
});


/* stringify to JSOn and convert to Base64 */
var storeString= btoa(JSON.stringify(radioState));

/* store in cookie*/

/* on page load pull data from cookie (if exists) - add a cookie validation test*/
var cookieString=storeString;// just using this for demo


var newPageState= JSON.parse(atob(cookieString));
/* loop through radios setting state */
$(':radio').prop('checked',function(){
    return newPageState[this.name][this.value];    
});

DEMO

atob()btoa()ドキュメント

編集: ブラウザーがサポートされている場合は、localStorage を使用し、Cookie のフォールバックを使用します。サイトへのすべての http リクエストに対してサーバーに送信される Cookie のサイズを最小限に抑えます。

于 2013-11-15T03:53:19.733 に答える