0

この問題に関連する質問が他にもあることは知っていますが、それらはアクティブではなく、1 年以上経過しています。

正常に動作するjquery uiダイアログがありますが、Cookieを設定して、ユーザーに一度表示されるようにしたいです。

setcookie 関数を使用する考えはありますか? それともjqueryでうまくいきませんか?私はjqueryがまったく得意ではないので、何が間違っているのかわかりません。

同じ問題に関する古い質問: JQuery UI モーダル ダイアログの Cookie の設定に関するヘルプ

これは私のコードです:

$(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/

2番

必要な場所にクッキーを作成します

$.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;

});

第4

あなたのifステートメントをチェックしてください

上記の if ステートメントは、Cookie の値が false の場合はダイアログを表示しないことを意味することを忘れないでください。Cookie が設定されていない場合、これがデフォルトになります。したがって、ダイアログが表示されることを期待する場合は Cookie を設定するか、好みに応じて以下のように if ステートメントを変更します。

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('the_cookie'); // => "the_value"
$.cookie('not_existing'); // => undefined

利用可能なすべての Cookie を読み取ります。

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

クッキーを削除:

// 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 に答える