【问题标题】:How to display modal from bootstrap by checking cookie in javascript如何通过检查 javascript 中的 cookie 从引导程序显示模式
【发布时间】:2017-01-06 12:06:25
【问题描述】:

我仅在单击模式(引导程序)中的按钮时尝试设置 cookie。我已经编写了以下代码来设置和获取 cookie,但是我出错了,因为 cookie 是在页面加载时自动设置的,并且根本不显示模式。我只需要在单击按钮时设置它。我不知道当模式甚至没有显示单击#setcookie_btn 时如何设置cookie。此代码出错的任何想法?

    $('#setcookie_btn').click(setCookie('{{user.get_username}}', true, 0.042));

    function setCookie(cname, cvalue, exdays) {
        var d = new Date();
        d.setTime(d.getTime() + (exdays*24*60*60*1000));
        var expires = "expires="+ d.toUTCString();
        document.cookie = cname + "=" + cvalue + "; " + expires;
    }

    function getCookie(cname) {
        var name = cname + "=";
        var ca = document.cookie.split(';');
        for(var i = 0; i <ca.length; i++) {
            var c = ca[i];
            while (c.charAt(0)==' ') {
                c = c.substring(1);
            }
            if (c.indexOf(name) == 0) {
                return c.substring(name.length,c.length);
            }
        }
            return "";
    }

    var cookie_val = getCookie('{{user.get_username}}');

    $(window).load(function() {

        if(cookie_val == false || "" ) {
            $('#myModal').modal({backdrop: 'static', keyboard: false});    
        }

    });


</script>

【问题讨论】:

    标签: javascript jquery twitter-bootstrap cookies


    【解决方案1】:

    违规行是

     $('#setcookie_btn').click(setCookie('{{user.get_username}}', true, 0.042));
    

    基本上,您不是传递函数引用,而是实际上执行函数并将返回值作为“处理程序”传递。如果您想将参数传递给函数并作为处理程序分配,只需使用匿名函数即可:

     $('#setcookie_btn').click(function() {
        setCookie('{{user.get_username}}', true, 0.042));
    });
    

    另外,不确定您要在条件中检查什么?

    if(cookie_val == false || "" ) {
         $('#myModal').modal({backdrop: 'static', keyboard: false});    
    }
    

    您的意思是检查cookie_val 是假还是空字符串?如果是的话,应该是

    if (cookie_val === false || cookie_val === '')
    

    【讨论】:

      【解决方案2】:

      您绑定click 事件的语法不正确。实际上是调用函数setcookie而不是绑定。

      改变

      $('#setcookie_btn').click(setCookie('{{user.get_username}}', true, 0.042));
      

      到

      $('#setcookie_btn').click(function()
      {
       setCookie('{{user.get_username}}', true, 0.042)
      });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-08-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-05-19
        • 1970-01-01
        • 2018-05-25
        • 1970-01-01
        相关资源
        最近更新 更多