【问题标题】:Jquery cookie plugin - conditional content determined by cookie being setJquery cookie 插件 - 由设置的 cookie 确定的条件内容
【发布时间】:2010-04-27 17:55:20
【问题描述】:

我有一个向所有新网站访问者显示的注册表单。如果用户填写表单,下次他们访问该站点时,我想在表单通常所在的位置显示“欢迎回来”消息。

我正在尝试通过 jquery cookie 插件 (http://plugins.jquery.com/project/Cookie) 执行此操作。

我的表单如下所示:

<div id="sign_up_form_wrapper"><form id="sign_up" action="" method="POST" name="form">
<input type="checkbox" name="checkbox" id="checkbox" value="1">&nbsp; I accept the terms and conditions</a>
<br /><br /><input type="submit" value="ENTER">
</form></div>

我在这里设置我的 cookie:

<script type="text/javascript" language="javascript">
$().ready(function()
{
    $('#sign_upm').submit(function(e)
    {
        e.preventDefault();

        if ($('#sign_up input[name=checkbox]').is(':checked'))
        {
            $.cookie('agreed_to_terms', '1', { path: '/', expires: 999999 });
        }
    });
});
</script>

当用户选中该框时,这将设置 cookie,但现在我需要这样做:

如果已设置 cookie,请执行以下操作:

<div id="sign_up_form_wrapper">
<p>Welcome back, John</p>
</div>

否则这样做:

<div id="sign_up_form_wrapper">
<!-- full form code here -->
</div>

任何想法或指点将不胜感激,谢谢。

【问题讨论】:

    标签: jquery forms cookies conditional


    【解决方案1】:

    Boris Guéry 很接近:

    HTML:

    <div id="sign_up_form_wrapper">
    <!-- full form code here -->
    </div>
    

    JavaScript:

    $(function () {
        if ($.cookie('agreed_to_terms') == 1) {
            $('sign_up_form_wrapper').html('<p>Welcome back, John</p>');
        }
    });
    

    【讨论】:

      【解决方案2】:

      是的。把它加进去

      });
      </script>
      

      【讨论】:

      • 谢谢。我认为这些回应意味​​着我会这样做:
        } else {
        } 但是当我这样做时,我又不能让条件工作,只需将 HTML 输出作为文本获取。
      【解决方案3】:

      只需获取 cookie 并检查它是否已设置。

      var $signupFormWrapper = $('<div />');
      
      if ( 1 == $.cookie(agreed_to_terms) )
      { 
           var $message = $('<p />').html('Welcome back, John');
      } else {
           var $message = $('<p />').html('<form>Your full form</form>');
      }
      
      $signupFormWrapper.append($message);
      

      根据必须触发的事件在所需的位置执行此操作

      【讨论】:

      • 谢谢,这看起来可以解决问题。但是,这个块应该被包裹在 javascript 标签中吗?当我这样做时,它将完整的 HTML 显示为文本,而不是执行条件。抱歉,但我的 js 非常有限。谢谢
      • 你必须在 js 中完成,我更新了代码以创建消息并将其包装在 div 中,然后将其附加到正文中你想要的位置。
      • 非常感谢,但 Jeffery To 的解决方案似乎效果更好
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-17
      • 1970-01-01
      • 1970-01-01
      • 2011-08-19
      • 2011-02-13
      • 1970-01-01
      相关资源
      最近更新 更多