如果单击按钮,则不会再次显示弹出窗口

时间:2015-12-08 12:25:05

标签: javascript jquery

我正在制作弹出窗口,提醒用户阅读一些文档。它还将包括一个按钮,以确认他们是否已阅读相关文件。 到目前为止,这是我的代码:

<form runat="server">
  <div id="cookie_box">
    We have compiled a summary of the  Technical Mailings sent throughout 2015. To view the document,<a href="/cookies">  click here</a>
    <br /><br />
    I confirm that I have read the above document
    <asp:Button runat="server" ID="confirmButton" Text="confirm" />
  </div>
</form>

和Javascript:

$(document).ready(function() {
    if (getCookie('show_cookie_message') != 'no') {
        $('#cookie_box').show();
    }

    $('.cookie_box_close').click(function() {
        $('#cookie_box').animate({
            opacity: 0
        }, "slow");
        setCookie('show_cookie_message', 'no');
        return false;
    });
});

function setCookie(cookie_name, value) {
    document.cookie = cookie_name + "=" + escape(value);
}

function getCookie(cookie_name) {
    if (document.cookie.length > 0) {
        cookie_start = document.cookie.indexOf(cookie_name + "=");
        if (cookie_start != -1) {
            cookie_start = cookie_start + cookie_name.length + 1;
            cookie_end = document.cookie.indexOf(";", cookie_start);
            if (cookie_end == -1) {
                cookie_end = document.cookie.length;
            }
            return unescape(document.cookie.substring(cookie_start, cookie_end));
        }
    }
    return "";


}

现在我想实现一个功能,当用户点击confirmButton时,弹出窗口将不会再显示(甚至在新会话中),但我不知道如何做这个。有什么建议吗?

3 个答案:

答案 0 :(得分:0)

如果您想使用cookie处理此问题而不依赖于服务器状态。那么你一定要看看这个库,以便用jquery访问cookie。

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

创建会话cookie:

$.cookie('name', 'value');

从那时起7天内创建过期的Cookie:

$.cookie('name', 'value', { expires: 7 });

创建过期的Cookie,在整个网站上有效:

$.cookie('name', 'value', { expires: 7, path: '/' });

阅读Cookie:

$.cookie('name'); // => "value"
$.cookie('nothing'); // => undefined 

你应该基本查询cookie中是否设置了某个值:

if($.cookie('confirm')=== 'yes')... //显示或隐藏您的方框

注意:一件重要的事情。如果仅执行客户端站点脚本,则不需要服务器端控件。 (RUNAT =&#34;服务器&#34)。如果是这样,您需要将其连接起来以处理客户端站点事件。现在它回发到服务器。

答案 1 :(得分:0)

尝试更改此代码

$('.cookie_box_close').click(function()
{
    $('#cookie_box').animate({opacity:0 }, "slow");
    setCookie('show_cookie_message','no');
    return false;
});

$('.cookie_box_close').click(function()
{
    $('#cookie_box').animate({opacity:0 }, "slow", function(){
       var value = confirm( "Click 'OK' if you don't want pop-up again");
       if ( value )
       {
         setCookie('show_cookie_message','no');
       } 
    });

    return false;
});

答案 2 :(得分:0)

您需要将您的点击处理程序附加到您的asp:Button。

尝试设置<asp:Button CssClass="cookie_box_close" ID="confirmButton" Text="confirm" />