【问题标题】:Open and Close jquery dialog from code behiend in c#从 C# 中的代码打开和关闭 jquery 对话框
【发布时间】:2014-09-29 16:14:17
【问题描述】:

我有一个jquery dialog,它在每次页面加载时都会打开。 jquery dialog 包含一个关闭按钮。

$(document).ready(function () {     
        $("#dialog").dialog({
            title: "Create your free showcase profile",
            autoOpen: true,
            hide: 'fold',
            show: 'blind',
            width: 'auto',
            modal: true,
            buttons: {
                Close: function () {
                    $(this).dialog('close');
                }
            }
        });
        setInterval(function () {
            $('#dialog').dialog('open');
        }, 10000);
    });

现在我要做的是,当用户通过单击Close 按钮关闭对话框时,直到会话结束,用户才能再次看到它。

请帮助实现这一目标

【问题讨论】:

  • 在这种情况下请尝试脚本管理器。
  • 您可以使用会话 ID 在 cookie 或 localStorage 中保存标志。每当您的页面加载时,只需检查您是否已经为当前会话设置了标志。如果是,则不显示对话框。
  • @AndreiV 感谢您的回答,但如何实现这一点,我如何创建关闭按钮单击事件?
  • 或多或少在 Kartikeya 的回答中。

标签: c# jquery jquery-dialog


【解决方案1】:

您可以设置一个localStorage 并在其中存储一个令牌值,然后检查localstorage,如图所示:

$(document).ready(function () {     
var $dialog =   $("div").dialog({
        title: "Create your free showcase profile",
        autoOpen: false,
        hide: 'fold',
        show: 'blind',
        width: 'auto',
        modal: true,
        buttons: {
            Close: function () {
                localStorage.setItem('token','closed');
                $(this).dialog('close');
            }
        }
    }).dialog('open');  //trigger on page load


     var init =  setInterval(function () {
         if(localStorage.getItem('token') == 'closed')
         {
             clearInterval(init);
             return;
         }
         $dialog.dialog('open');
      }, 10000);
});

或者使用sessionStorage,如图所示:

$(document).ready(function () {     
var $dialog =   $("div").dialog({
        title: "Create your free showcase profile",
        autoOpen: false,
        hide: 'fold',
        show: 'blind',
        width: 'auto',
        modal: true,
        buttons: {
            Close: function () {
                sessionStorage.setItem('token','closed');
                $(this).dialog('close');
            }
        }
    }).dialog('open');  //trigger on page load


     var init =  setInterval(function () {
         if(sessionStorage.getItem('token') == 'closed')
         {
             clearInterval(init);
             return;
         }
         $dialog.dialog('open');
      }, 10000);
});

Working Demo

【讨论】:

  • 这是不完整的。考虑如果用户关闭他们的浏览器,再次打开它并再次访问网站会发生什么。 token 已经存在...您应该删除它(在选项卡/窗口关闭时)或保存会话 ID 而不是 open
  • @Kartikeya 我把localStorage 代码放在了哪个地方?
  • @GarimaRawat...完整的代码如上所示,带有本地存储
  • @AndreiV ..是的好点......我使用了会话存储,它在浏览器关闭事件中失去了它的价值,
  • @Kartikeya 它工作正常,但是当我按下关闭按钮时,对话框再次显示。页面加载后工作正常。
猜你喜欢
  • 1970-01-01
  • 2011-07-24
  • 1970-01-01
  • 2012-09-24
  • 1970-01-01
  • 1970-01-01
  • 2011-03-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多