Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 引导,如果在页面加载时选中复选框,则单击复选框时不会取消选中该复选框_Javascript_Html_Bootstrap 4 - Fatal编程技术网

Javascript 引导,如果在页面加载时选中复选框,则单击复选框时不会取消选中该复选框

Javascript 引导,如果在页面加载时选中复选框,则单击复选框时不会取消选中该复选框,javascript,html,bootstrap-4,Javascript,Html,Bootstrap 4,加载页面时,如果单击复选框,则不会取消选中。我必须点击它两次,这样它才能取消选中。如何解决这个问题 我的参考代码可以找到 HTML <div class="container"> <div class="row"> <div class="col-lg-12"> <div class="button-group"> <button type="button" cl

加载页面时,如果单击复选框,则不会取消选中。我必须点击它两次,这样它才能取消选中。如何解决这个问题

我的参考代码可以找到

HTML

<div class="container">
    <div class="row">
        <div class="col-lg-12">
            <div class="button-group">
                <button type="button" class="btn btn-default btn-sm dropdown-toggle" data-toggle="dropdown"><span class="glyphicon glyphicon-cog"></span> <span class="caret"></span></button>
                <ul class="dropdown-menu">
                    <li><a href="#" class="small" data-value="option1" tabIndex="-1"><input type="checkbox" checked />&nbsp;Option 1</a></li>
                    <li><a href="#" class="small" data-value="option2" tabIndex="-1"><input type="checkbox"/>&nbsp;Option 2</a></li>
                    <li><a href="#" class="small" data-value="option3" tabIndex="-1"><input type="checkbox"/>&nbsp;Option 3</a></li>
                    <li><a href="#" class="small" data-value="option4" tabIndex="-1"><input type="checkbox"/>&nbsp;Option 4</a></li>
                    <li><a href="#" class="small" data-value="option5" tabIndex="-1"><input type="checkbox"/>&nbsp;Option 5</a></li>
                    <li><a href="#" class="small" data-value="option6" tabIndex="-1"><input type="checkbox"/>&nbsp;Option 6</a></li>
                </ul>
            </div>
        </div>
    </div>
</div>

当您为
选项1
提供
选中的
时,您没有将其添加到
选项
数组中。
选项
数组开头为空,导致双击问题


如果要使用选中,请将
“option1”
添加到
选项
数组中,它将正常工作。

复制我的html部分似乎很好,选项1有一个“选中”选项,您尝试单击它一次,它不会取消选中,您必须单击它两次才能取消选中它默认情况下没有选中任何内容。而且,你在那里做了很多。将id保存在数组中的目的是什么?问题是,您实际上是在检查和取消检查输入,默认情况下,当检查某个内容时,其id不在数组中,因此代码会将其标记为再次检查。获取它?我找到的代码笔仅供我参考,真正的是我在问题中粘贴的代码笔…我仍然不明白,如何解决它我如何在页面加载的
选项
数组中添加它?因为某些选项在新页面上被选中,所以可以使用$(document).ready()并对值进行硬编码,或者使用ajax调用从服务器获取选中的值。
var options = [];

$('.dropdown-menu a').on('click', function (event) {

    var $target = $(event.currentTarget),
        val = $target.attr('data-value'),
        $inp = $target.find('input'),
        idx;

    if ((idx = options.indexOf(val)) > -1) {
        options.splice(idx, 1);
        setTimeout(function () {
            $inp.prop('checked', false)
        }, 0);
    } else {
        options.push(val);
        setTimeout(function () {
            $inp.prop('checked', true)
        }, 0);
    }

    $(event.target).blur();

    console.log(options);
    return false;
});