2016-04-22 24 views
0

我有一個引導模式顯示需要確認/接受/點擊(按鈕:#id_complete)才能訪問該頁面。爲了激活按鈕,用戶需要點擊兩個複選框。目標是:我希望只有在會話中沒有單擊/確認/接受#id_complete按鈕之前,才能顯示模式。如果按鈕被點擊/確認/接受,模式不應再顯示。該cookie應該有效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

調用模式功能不會暫停JavaScript執行,這意味着cookie將被立即設置創建。

要的前一天,餅乾過期添加對象與expires屬性設置1.

監聽hidden.bs.modal或根據其引導的版本,您有模態的hidden事件,然後設置Cookie :

// 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對象和存儲在日e modal最後被接受:

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

完美,工作!一個小額外的願望...我可以讓cookie有效一天或直到用戶關閉瀏覽器?這意味着,每當新的瀏覽器會話啓動時,用戶需要確認模式(獨立於瀏覽器中的cookie設置)? –

+0

我還有另一個問題......我在多個頁面上包含模態...對於特定頁面上述工作...但如果我打電話給其他頁面之一...我需要點擊/確認模態再次。我怎樣才能防止這一點?意思是,如果我點擊任何頁面上的#id_complete按鈕,該cookie對其他頁面也有效?對於其他問題,我很抱歉 –

+0

它應該適用於所有頁面。你可以在你的問題中包含來自其他頁面的代碼,或者開始一個新的代碼?我在回答中添加了對您的其他問題的答案。 – metarmask

0

您設置cookie的行需要移動按鈕的點擊處理程序。

在它的當前位置如果cookie沒有發現它會不管是什麼用戶在做

相關問題