【问题标题】:Javascript - Conditionally add checkbox to php page if cookie existsJavascript - 如果存在 cookie,则有条件地将复选框添加到 php 页面
【发布时间】:2014-10-31 20:26:33
【问题描述】:

我有一些 Javascript,在 PHP/WordPress 页面上的提交按钮之前添加了一些免责声明文本和一个确认复选框。我想要发生的是脚本检查 cookie 的存在。如果 cookie 不存在(或已过期),则添加免责声明文本、复选框并强制用户在继续之前单击复选框。但是一旦完成,就会写入一个 cookie,以便下次脚本运行时,如果绕过免责声明文本,复选框,只允许用户点击“提交”。

所以,类似:

if cookie-exists {
    // straight to submit part of the code
} else {
    // show disclaimer and checkbox
    // Only allow user to hit submit if checkbox is ticked
    // Set the cookie with an expire of a day
}

我可以在这里看到关于设置/读取 cookie 的答案 > How do I create and read a value from cookie?

但我只是在努力将其放入下面的代码 sn-p。
任何指针或帮助将不胜感激。谢谢。

代码 sn-p 如下:

function add_listing_select_cb()
{
    ?>
    <script type="text/javascript">
        jQuery(document).ready(function ($){
            var checkbox_cont = '<br><input type="checkbox" name="I_Agree" id="I_Agree" value="I_Agree" /> <b>Disclaimer text here....</b>';
            jQuery(".property-search input[type='submit']").before(checkbox_cont);

            jQuery("#searchform").submit(function () {
                if (!jQuery("#I_Agree").is(":checked")) {
                    alert("Please first agree with the terms.");
                    return false;
                };
            });


            var $sel = $('#showresultsbasedonourratings'),
            $opts = $sel.children();
            $optsSorted = [];
            $optsSorted.push($opts.eq(0));
            for (var i = $opts.length - 1; i > 0; i--) {
                $optsSorted.push($opts.eq(i));
            };

            console.log($optsSorted);

            $sel.empty();
            $sel.append($optsSorted);

        });
    </script>
    <?php
}

【问题讨论】:

    标签: javascript php cookies


    【解决方案1】:

    你尝试过类似的方法吗?

    function add_listing_select_cb()
    {
        ?>
        <script type="text/javascript">
           function getCookie(name) {
                var value = "; " + document.cookie;
                var parts = value.split("; " + name + "=");
                if (parts.length == 2) return parts.pop().split(";").shift();
            }
    
            jQuery(document).ready(function ($){
                if (getCookie("anything")!==true){
                    var checkbox_cont = '<br><input type="checkbox" **required** name="I_Agree" id="I_Agree" value="I_Agree" /> <b>Disclaimer text here....</b>';
                    jQuery(".property-search input[type='submit']").before(checkbox_cont);
    
                    jQuery("#searchform").submit(function () {
                        if (!jQuery("#I_Agree").is(":checked")) {
                            alert("Please first agree with the terms.");
                            return false;
                        };
                    });
                }
    
                var $sel = $('#showresultsbasedonourratings'),
                $opts = $sel.children();
                $optsSorted = [];
                $optsSorted.push($opts.eq(0));
                for (var i = $opts.length - 1; i > 0; i--) {
                    $optsSorted.push($opts.eq(i));
                };
    
                console.log($optsSorted);
    
                $sel.empty();
                $sel.append($optsSorted);
    
            });
        </script>
        <?php
    }
    

    【讨论】:

    • 嗨@radu - 感谢您的建议。这就是我要找的。我在警报后添加一个“else”来设置cookie: document.cookie="anything" + "=" + "true" ;但它的表现并不像预期的那样。我会玩弄你的建议,我相信我会到达那里。谢谢。伊恩
    • 也许我的 getCookie 没有按预期工作尝试使用 w3s w3schools.com/js/js_cookies.asp 中的那些,我认为我犯的另一个错误是检查 getCookie("anything")!==true。也许它被设置为字符串而不是布尔值,所以检查应该是 getCookie("cookie_name")!="true"。 @EyePeaSea 查看此链接,他们在其中创建和读取 cookie w3schools.com/js/tryit.asp?filename=tryjs_cookie_username
    • 谢谢@Radu - 我会检查 w3 示例。我被您和其他 Java 专家熟悉的东西所愚弄——代码错误并不总是会引发可见的错误,它只是从该代码段中退出。所以,我输入了一些有错字的测试代码,但因为我没有看到任何类型的错误,所以我认为它没问题。非常令人费解。一个有用的学习经验:-)
    • 啊啊啊啊。 cookie 名称区分大小写!其他读者/新手可以在这里阅读它stackoverflow.com/questions/11311893/… - 这就是它表现出不可预测的原因。所以 - 再次感谢@Radu 的帮助 - 你的回答是一个巨大的帮助。
    猜你喜欢
    • 2013-03-01
    • 1970-01-01
    • 2016-09-04
    • 2016-07-15
    • 1970-01-01
    • 1970-01-01
    • 2014-07-07
    • 2013-01-06
    • 1970-01-01
    相关资源
    最近更新 更多