2012-01-26 54 views
0

這jquery_modal_confirm_dialogue許多實驗後工作。 當我們的觀衆同意我們的使用條款,他們將被重定向到產品頁面products.html放在設置cookie - jquery模式確認對話

我迫切需要設置一個cookie。 - 如果他們不同意,當他們試圖訪問products.html時,此 不可見並再次顯示模式對話框

您能否給我一個提示? (jQuery的1.3.2.min.js)

這是我jqmodal.js

function confirm(msg,callback) { 
    $('#confirm') 
    .jqmShow() 
    .find('p.jqmConfirmMsg') 
     .html(msg) 
    .end() 
    .find(':submit:visible') 
     .click(function(){ 
     if(this.value == 'yes') 
      (typeof callback == 'string') ? 
      window.location.href = callback : 
      callback(); 
     $('#confirm').jqmHide(); 
     }); 
} 


$().ready(function() { 
    $('#confirm').jqm({overlay: 88, modal: true, trigger: false}); 

    // trigger a confirm whenever links of class alert are pressed. 
    $('a.confirm').click(function() { 
    confirm('About to visit: '+this.href+' !',this.href); 
    return false; 
    }); 
});// JavaScript Document 

這是我的index.html:

<a href="http://products.html/" class="confirm">Products</a> 

    <div class="jqmConfirm" id="confirm"> 

    <div id="ex3b" class="jqmConfirmWindow"> 
     <div class="jqmConfirmTitle clearfix"> 
      <h1>Terms of Use</h1> 
     </div> 

     <div class="jqmConfirmContent"> 
     <p class="jqmConfirmMsg"></p> 
      <p>Important legal information</p></div> 

     <input type="submit" value="Decline" /> 
     <input type="submit" value="Proceed" /> 
     </div> 
    </div> 

回答

0

它的工作,最後!當cookie存在時,我錯過了回調,這些tic圍繞着cookie的價值。這是它的樣子。請讓我知道是否有一些明顯的錯誤。 (非常感謝您的支持)

function confirm(msg,callback) { 
    $('#confirm') 
    .jqmShow() 
    .find('p.jqmConfirmMsg') 
     .html(msg) 
    .end() 
    .find(':submit:visible') 
     .click(function(){ 
     if(this.value == 'Proceed'){ 
      $.cookie("agreed_to_terms", '1', { expires : 1, path: '/' }); //set cookie, expires in 365 days 
      (typeof callback == 'string') ? 
      window.location.href = callback : 
      callback(); 
     } 
     $('#confirm').jqmHide(); 
     }); 
} 


$().ready(function() { 
    $('#confirm').jqm({overlay: 88, modal: 'true', trigger: false}); 

    // trigger a confirm whenever links of class alert are pressed. 
    $('a.confirm').click(function() { 
    if ($.cookie('agreed_to_terms') == '1'){window.location.href = callback = 
      callback() 
     //they already have cookie set 
    }else{ 
     confirm('About to visit: '+this.href+' !',this.href); 
    } 
    return false; 
    }); 
});// JavaScript Document 
+1

請確保你的答案是正確的。 –

3

如果我理解正確你希望他們接受確認,並讓它設置一個cookie。然後他們下一次出現不會拖延合法的事情。

首先得到這個jQuery插件:

https://github.com/carhartl/jquery-cookie

它允許你做這樣的事情:

$.cookie("test", 1); 

所以,你會修改,像這樣的代碼:

function confirm(msg,callback) { 
    $('#confirm') 
    .jqmShow() 
    .find('p.jqmConfirmMsg') 
     .html(msg) 
    .end() 
    .find(':submit:visible') 
     .click(function(){ 
     if(this.value == 'yes'){ 
      $.cookie("didAccept", 1, { expires : 365 }); //set cookie, expires in 365 days 
      (typeof callback == 'string') ? 
      window.location.href = callback : 
      callback(); 
     } 
     $('#confirm').jqmHide(); 
     }); 
} 


$().ready(function() { 
    $('#confirm').jqm({overlay: 88, modal: true, trigger: false}); 

    // trigger a confirm whenever links of class alert are pressed. 
    $('a.confirm').click(function() { 
    if ($.cookie('the_cookie') == 1){ 
     //they already have cookie set 
    }else{ 
     confirm('About to visit: '+this.href+' !',this.href); 
    } 
    return false; 
    }); 
});// JavaScript Document 
+0

嗨保羅! 非常感謝您的快速響應。 我相信我做得正確,但modal_dialogue不再顯示。 (也許餅乾工作得很好,要麼我打破了這一切):D 我用你的代碼寫了我的tou.js。 我是否需要在我的html中包含任何其他代碼? 有沒有可能我的jQuery版本不適合? 我該如何檢查cookie是否有效? (感謝您的耐心等待,這是我在這些問題上的第3周) –

+0

好問題。你能設置一個http://jsfiddle.net/你的代碼的例子,並在這裏發佈鏈接?這會讓我更好地瞭解您正在使用的庫。 –

+0

我設法使其顯示。 只是改名爲「the_cookie」,「didAccept」和值「繼續」而不是「是」。 我學會了檢查cookie是否被設置。 唯一的問題是現在設置cookie我不得到了重定向:( 是的,我會加載它(再次感謝...這是推動我堅果)後 –