2016-04-22 8 views
0

私はページにアクセスするために、確認/承認/クリック(ボタン:#id_complete)する必要があることを示すブートストラップモーダルを持っています。ボタンをアクティブにするには、ユーザーは2つのチェックボックスをクリックする必要があります。目標は、#id_completeボタンがまだセッション内でクリック/確認/承認されていない限り表示されるようにしたいのです。ボタンがクリック/確認/受け入れられた場合、モーダルは再び表示されません。クッキーは1日有効である必要があります。私はjquery-cookie-1.4.0を使用していますボタンをクリック/受け入れ/確認した後に再びモーダルを表示しない方法は?

以下の例は最初のサイト訪問時にのみ表示されていますが、これは目的ではありません。

<button id="id_complete" type="button" class="btn btn-default" data-dismiss="modal" disabled="disabled">I Accept!</button> 

if ($.cookie('pop') == null) { 
    $('#myModal').modal({ 
      backdrop: 'static' 
     }); 
    $.cookie('pop', '1'); 
} 

$('#accepted1,#accepted2').click(function() { 
    if ($('#accepted1:checked,#accepted2:checked').length == 2) 
     $('#id_complete').removeAttr('disabled'); 
    else 
     $('#id_complete').attr('disabled','disabled'); 
}); 

答えて

0

をやっているの作成されますが見つからない場合、現在の位置です。日がexpiresプロパティを持つオブジェクトを追加した後、クッキーの有効期限が切れるようにするに

hidden.bs.modalまたはあなたが持っているブートストラップのバージョンに応じて、モーダルでhiddenイベントをリッスンし1

を設定し、クッキーを設定します:

// Bootstrap <2.3.2 
if($.cookie('pop') == null) { 
    $('#myModal').modal({ 
     backdrop: 'static' 
    }).on('hidden', function(){ 
     $.cookie('pop', '1', {expires: 1}); 
    }); 
} 
// Bootstrap 3 
if($.cookie('pop') == null) { 
    $('#myModal').modal({ 
     backdrop: 'static' 
    }).on('hidden.bs.modal', function(){ 
     $.cookie('pop', '1', {expires: 1}); 
    }); 
} 

はコメントで質問に答えるために:

は、それがページのセッションの後に期限切れにするためにあなたがwindow.sessionStorageのオブジェクトや店舗目を使用することができますモーダルが最後に受け入れられました:

var lastAccepted = parseInt(sessionStorage.lastAccepted); 
// If lastAccepted isn't a number (because it doesn't exist or some other reason) 
// or the last acceptance was more than a day ago 
if(isNaN(lastAccepted) || Date.now() - lastAccepted > 86400000) { 
    $('#myModal').modal({ 
     backdrop: 'static' 
    }).on('hidden.bs.modal', function(){ 
     sessionStorage.lastAccepted = Date.now(); 
    }); 
} 
+0

完璧でした!マイナーな追加の願い...クッキーを1日有効にすることはできますか?ユーザーがブラウザを閉じるまでは可能ですか?さらに、新しいブラウザセッションが開始されるたびに、ユーザーはモーダルを確認する必要があります(ブラウザのCookie設定とは独立しています)。 –

+0

私は別の問題があります...複数のページにモーダルを含める...上記の特定のページについて...まだ他のページの1つを呼び出すと...モーダルをクリック/確認する必要があります再び。どうすればこれを防ぐことができますか?つまり、どのページでも#id_completeボタンをクリックすると、他のページにも有効です。追加の質問申し訳ありません –

+0

すべてのページで動作するはずです。他のページのコードを質問に含めたり、新しいページを作成したりできますか?私はあなたの他の質問への答えを私の答えに加えました。 – metarmask

0

クッキーを設定する行は、ボタンのクリックハンドラを動かす必要があります。それに

はクッキーが、それは関係なく、ユーザーがクッキーをすぐに設定されることを意味JavaScriptの実行を一時停止しませんモーダル関数を呼び出す

関連する問題