每次创建新帖子时,如何取消选中自定义元框中的复选框值?

时间:2018-09-05 10:20:51

标签: javascript php jquery wordpress

我正在创建一个WordPress插件,并且有一个包含一些复选框的自定义meta-box。现在,我想即使在刷新页面后也要保存这些复选框的状态,因此我要这样做:

<script type="text/javascript">
(function() {
    var boxes = document.querySelectorAll("input[name='my_meta_box_check[]']");
    for (var i = 0; i < boxes.length; i++) {
        var box = boxes[i];
        if (box.hasAttribute("value")) {
            setupBox(box);
        }
    }

    function setupBox(box) {
        var storageId = box.getAttribute("value");
        var oldVal    = localStorage.getItem(storageId);
        box.checked = oldVal === "true" ? true : false;

        box.addEventListener("change", function() {
            localStorage.setItem(storageId, this.checked);
        }); 
    }
})();
</script>

它有效。但是,发生的事情是,每当创建新帖子时,就会使用上一帖子中的旧值来选中复选框。首次创建帖子时,如何刷新或取消选中所有复选框? 如果发布状态尚未发布,我也尝试从数据库中删除发布元,例如:

if(get_post_status($post->ID)==='publish'){
    echo "<b>"."Post is published!"."</b></br>";
}
else
{
    global $wpdb;   
    global $post;
    echo "<b>"."Post is not published!"."</b></br>";    
    $wpdb->query("DELETE from wp_postmeta where post_id LIKE '$post->ID' AND meta_key='my_meta_box_check'");  

}

它执行查询,但是使用上一个帖子中的值来选中复选框。

1 个答案:

答案 0 :(得分:2)

提交帖子后,您需要清除本地存储空间。

如果您要删除/清除本地存储中所有不使用的值

localStorage.clear();

如果您要从本地存储中删除特定项目,则不使用以下代码

localStorage.removeItem(key);