如何在重新加载页面时也显示所有选中的复选框?

Posted

技术标签:

【中文标题】如何在重新加载页面时也显示所有选中的复选框?【英文标题】:How to show all checked checkboxes also at reloading the page? 【发布时间】:2019-04-30 05:02:42 【问题描述】:

我有一个问题:我的网站正在使用 javascript 搜索选中的复选框。

$(function () 
    var $allELements           = $('.input-box');
    var $selectedElementsListing = $('#selectedElements');
    var $selectedElementsLabel   = $('#selectedElementsLabel');
    var $elementInfo         = $('.elementInfo ');

    $allELements.on('click', function () 
        $selectedElementsListing .html(
            $allELements.filter(':checked').map(function (index, checkbox) 
                return '<div>' + checkbox.title + '</div>';
            ).get().join('')
        );

        if ($selectedElementsListing .text().trim().length)
        
            $selectedElementsListing .show();
            $selectedElementsLabel.show();
            $elementInfo.show();
        
    );
);

所以它在我的主页上搜索选中的复选框,并在左下角列出复选框的名称(作为用户信息)。 我的 HTML 如下所示:

<div class="elementInfo" >
        <p>
            <strong id="selectedElementsLabel" ><u>Ausgewählte
                Magazine:</u></strong><br />
            <span id="selectedElements"></span>
        </p>
</div>

它会从此输入字段中获取复选框名称:

<input class="input-box" title="[[ElementName]]" type="checkbox" id="A[[ID]]" name="ID[]"
                                       value="[[ID]]" checked="[[checked_element]]" />

当我按下重新加载时,所选复选框的信息栏没有出现。只有当我再次按下其中任何一个时,它才会显示选中的复选框(然后它会显示所有也被选中的复选框)

【问题讨论】:

【参考方案1】:

每次刷新页面时,都会重新渲染 DOM,并且不会在任何地方存储任何状态。要保留选中框的状态,您可以使用 localStorage 来存储选中状态,然后在页面加载时,您可以读取 localStorage 并执行通过检查本地存储数据来检查它们的函数。

// call this every time someone checks a box
window.localStorage.setItem('some key name of data', 'some data structure with checkbox state')

//Do this every time page is loaded
window.localStorage.getItem('previously used key name')

附:我假设每次有人检查您正在保留状态的框时,您都没有调用后端 api

更多信息请联系visit understand state management的好书

【讨论】:

以上是关于如何在重新加载页面时也显示所有选中的复选框?的主要内容,如果未能解决你的问题,请参考以下文章

页面加载时,显示选中或未选中的复选框

如何启用在页面加载时选中的第一个复选框并仅显示数据目标 div 并隐藏其他复选框,并且一次仅选中一个复选框

重新加载页面复选框后不应重置

如果在 Jquery 加载页面时在网格中禁用了所有复选框,则如果没有选中复选框并禁用按钮,则发出警报

vue 刚加载的菜单无法渲染选中效果

加载时默认选中Angularjs复选框,并在选中时禁用选择列表