0

我知道有更多与此问题相关的问题,但它们不活跃并且超过 1 岁。

我有一个工作正常的 jquery ui 对话框,但我想设置一个 cookie,以便它为用户显示一次。

使用 setcookie 函数不是一个想法吗?或者这不适用于jquery?我对 jquery 一点也不了解,所以我不知道我做错了什么。

具有相同问题的较旧问题:Help With Setting Cookie for a JQuery UI Modal Dialog

这是我的代码:

$(function() {
        if ($.cookie('showDialog') == undefined || $.cookie('showDialog') == null || $.cookie('showDialog') != 'false') {

$( "#dialog" ).dialog(
{ 
show: "slow",
modal: "true",
width: 600,
show: "fold",
hide: "fade",
resizable: false,
draggable: false,
buttons: [ { id: "go", text: "Opslaan", click: function() { $( this ).dialog( "close" ); } } ],
open: function(event, ui) { $(".ui-dialog-titlebar-close").hide();  }});
$(".ui-widget-overlay").css({background: "#000", opacity: 0.8});
});

$.cookie('showDialog', 'false', { expires: 1 }); // set the cookie, with expiry after 1 day
    }
});

我试图设置一个cookie,但它没有显示出来。真的很奇怪。我认为我的对话代码和 cookie 代码互相搞乱了。

谢谢

4

1 回答 1

1

在这里试试:http: //jsfiddle.net/SkHJw/

第一的

包括 jquery cookie 插件:https ://github.com/carhartl/jquery-cookie/

第二

在你想要的地方创建 cookie

$.cookie('showDialog', true);

第三

去掉代码中多余的大括号和圆括号(这应该可以解决您的对话框问题)。我在下面把它们取下来了:

$(function() {

    if ($.cookie('showDialog') == undefined || $.cookie('showDialog') == null || $.cookie('showDialog') != 'false') {

        $( "#dialog" ).dialog(
        { 
        show: "slow",
        modal: "true",
        width: 600,
        show: "fold",
        hide: "fade",
        resizable: false,
        draggable: false,
        buttons: [ { id: "go", text: "Opslaan", click: function() { $( this ).dialog( "close" ); } } ],
        open: function(event, ui) { $(".ui-dialog-titlebar-close").hide();  }});
        $(".ui-widget-overlay").css({background: "#000", opacity: 0.8});

        $.cookie('showDialog', 'false', { expires: 1 }); // set the cookie, with expiry after 1 day
    }


////$.cookie('showDialog', true);  //uncomment this line to set cookie to true - this should show dialog
//alert($.cookie('showDialog')); //Uncomment this line to show the value of your cookie. It should read false and dialog would not launch;

});

第四

检查你的 if 语句

不要忘记上面的 if 语句意味着如果 cookie 值为 false,对话框不应该显示。如果未设置 cookie,这应该是默认值。因此,如果您希望对话框显示或更改 if 语句,请设置 cookie,具体取决于您的偏好:

if ($.cookie('showDialog') == undefined || $.cookie('showDialog') == null || $.cookie('showDialog') != 'true') {

您可能需要以下这些来了解如何实际使用 jquery.cookie 插件:

用法

创建会话 cookie:

$.cookie('the_cookie', 'the_value');

创建过期 cookie,从那时起 7 天:

$.cookie('the_cookie', 'the_value', { expires: 7 });

创建过期 cookie,在整个站点中有效:

$.cookie('the_cookie', 'the_value', { expires: 7, path: '/' });

读取 cookie:

$.cookie('the_cookie'); // => "the_value"
$.cookie('not_existing'); // => undefined

阅读所有可用的 cookie:

$.cookie(); // => { "the_cookie": "the_value", "...remaining": "cookies" }

删除 cookie:

// Returns true when cookie was found, false when no cookie was found...
$.removeCookie('the_cookie');

// Same path as when the cookie was written...
$.removeCookie('the_cookie', { path: '/' });

注意:删除 cookie 时,您必须传递与设置 cookie 完全相同的路径、域和安全选项,除非您依赖默认选项。

在此处了解更多信息:https ://github.com/carhartl/jquery-cookie/

于 2013-03-12T23:56:40.707 回答