点击,设置cookie并选中复选框

时间:2017-12-28 15:41:49

标签: javascript jquery cookies checkbox

我有一个带复选框的屏幕。单击标签后,将打开一个带有文本和同意按钮的新窗口。用户单击“同意”按钮后,将使用引用该复选框的唯一ID设置Cookie。如何根据cookie是否等于1来选中此复选框?代码如下。

task

现在当窗口关闭时,我不确定如何选中复选框。这样的事可能吗?

document.cookie = "doc_35_readit=0";
$('#have_read_agreement').on('click', function () {                    
  document.cookie = "doc_35_readit=1";
});
if (cookie("doc_35_readit") == "1") {
  $(".doc_35_readit").click();
}

3 个答案:

答案 0 :(得分:0)

如果您希望选中或取消选中,则可以将input:checkbox元素的属性checked设置为true或false。



$('input[name=test]').attr('checked', true);

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="checkbox" name="test" />
&#13;
&#13;
&#13;

答案 1 :(得分:0)

要按名称获取Cookie,您需要创建自己的get函数,例如:

function getCookie(cname) {
    var name = cname + "=";
    var decodedCookie = decodeURIComponent(document.cookie);
    var ca = decodedCookie.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 "";
}

这将解析cookie并使您能够通过名称选择它们,如:

getCookie("doc_35_readit")

然后你的情况会像:

if (getCookie("doc_35_readit") == "1") {
    $(".doc_35_readit").click();
}

答案 2 :(得分:0)

这很可能只与原生javascript有关。

但是因为你似乎不是创建cookie的专家而你正在使用jquery

我建议您使用此插件:https://github.com/js-cookie/js-cookie

然后你可以尝试这个例子:

<button id="delete">delete cookie</button>
<button id="display">display cookie</button>
<textarea></textarea>

<div id="modal"><h1>this will display only if user not accept yet</h1>are you agree with our ToS? <input type="checkbox" id="agreementChecker-0" name="agreeCheck-0" value="35" class="mandatory agreeChecker doc_35_readit"></div>

<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/js-cookie@2/src/js.cookie.min.js"></script>

<script>
$(function(){


    $('#agreementChecker-0').change(function(){
        if($(this).prop('checked')){
            Cookies.set('doc_35_readit', 1);
            $('#modal').hide();
        }else{
            Cookies.set('doc_35_readit', 0);
            $('#modal').show();
        }
    });

    if(Cookies.get('doc_35_readit')== 1){
        $('#modal').hide();
    }

    $('#display').click(function(){
        var c = (Cookies.get('doc_35_readit') ==undefined) ? 'not found':Cookies.get('doc_35_readit');
        $('textarea').val(c);
        console.log(Cookies.get()); //show all possible cookie in console
    });

    $('#delete').click(function(){
        Cookies.remove('doc_35_readit');
        $('#modal').show();
    });
});
</script>
  

PS:您可以尝试刷新页面以查看您的Cookie是否已设置