设置cookie - jquery模态确认对话

时间:2012-01-26 16:22:01

标签: jquery modal-dialog setcookie

这个jquery_modal_confirm_dialogue经过多次实验后正在运行。 当我们的访问者同意我们的使用条款时,他们会被重定向到产品页 products.html

我迫切需要设置一个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>

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

终于可行了!当cookie存在时,我错过了回调,这些抽搐“围绕着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