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

标签 javascript php jquery wordpress

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

<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'");  

}

它执行查询,但使用上一篇文章中的值检查复选框。

最佳答案

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

如果你想从本地存储中删除/清除所有值而不是使用

localStorage.clear();

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

localStorage.removeItem(key);

关于javascript - 每次创建新帖子时如何取消选中自定义元框中的复选框值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52182772/

相关文章:

javascript - 我可以在 Windows 中运行 2 个 Node.js 项目吗?

javascript - 为什么 ("a"中的 ["a","b"]) 产生假,而 (1 in [1,2]) 产生真?

javascript - 在 HTML 表单上保留从数据库接收的数据

php - 打印执行的 PHP 代码(采用的代码路径)

php - 使用 jQuery 表单规则显示文本框时验证文本框

javascript - 如何在javascript中比较具有相同数据属性的字段值

javascript - 语法错误: unterminated string literal javascript console

Javascript:使用对象文字时,属性的顺序是否重要?

javascript - javascript中以下两个有什么区别?

jquery - 更改水平形式以左对齐( Bootstrap )