单选按钮的全选以及再次/第二次点击时取消选中

使用$(元素对象).prop('checked',true) 使单选框选中
使用$(元素对象).prop('checked',false) 使单选框取消选中
使用自定义属性 data-checked 来获取和更新当前复选框的状态

html页面代码

<div class="batch-order">
    <div class="order-body">
        <h5 class="order-header">批量审批生产日志工单信息</h5>
        <form name="orderMgn" action="">
            <div class="order-wrapper batch-operate">
                <div class="flex-content">
                    <div class="label">批量审批:</div>
                    <div class="operate">
                        <label> <input id="passAll" type="radio" name="next" value="0" data-checked="0">全部通过</label>
                        <label> <input id="denyAll" type="radio" name="next" value="1" data-checked="0">全部不通过</label>
                    </div>
                </div>
                <div class="flex-content">
                    <div class="label">批量日志评价:</div>
                    <div class="operate">
                        <input id="remarkAll" type="text" name="remark" value="">
                    </div>
                </div>
            </div>
        </form>
        <div id="order-content">
      <form name="order" data-order="62382f86-b172-11ec-9a20-eeeeeeeeeeee" action="">
            <input type="hidden" name="flowInstanceId" value="62382f86-b172-11ec-9a20-eeeeeeeeeeee">
            <input type="hidden" name="taskId" value="627ed580-b172-11ec-9a20-eeeeeeeeeeee">
            <div class="order-wrapper">
                <div class="flex-content order">
                    <div class="orderInfo">
                        <img class="mgn-icon" src="/ibop/business/ufc/productionlog/image/Management_2.png" alt="">
                        <span class="tit">测试3</span>
                        <a class="detail-link" name="detail-link">查看详情</a>
                    </div>
                    <div class="orderOption">
                        <label> <input type="radio" name="next" value="0" checked="">通过</label>
                        <label> <input type="radio" name="next" value="1">不通过</label>
                    </div>
                </div>
                <div class="flex-content">
                    <div class="label">批量日志评价:</div>
                    <div class="operate">
                        <input type="text" name="remark" value="">
                    </div>
                </div>
            </div>
        </form>
      <form name="order" data-order="60968d6a-b172-11ec-9a20-eeeeeeeeeeee" action="">
            <input type="hidden" name="flowInstanceId" value="60968d6a-b172-11ec-9a20-eeeeeeeeeeee">
            <input type="hidden" name="taskId" value="60f157a4-b172-11ec-9a20-eeeeeeeeeeee">
            <div class="order-wrapper">
                <div class="flex-content order">
                    <div class="orderInfo">
                        <img class="mgn-icon" src="/ibop/business/ufc/productionlog/image/Management_2.png" alt="">
                        <span class="tit">测试3</span>
                        <a class="detail-link" name="detail-link">查看详情</a>
                    </div>
                    <div class="orderOption">
                        <label> <input type="radio" name="next" value="0" checked="">通过</label>
                        <label> <input type="radio" name="next" value="1">不通过</label>
                    </div>
                </div>
                <div class="flex-content">
                    <div class="label">批量日志评价:</div>
                    <div class="operate">
                        <input type="text" name="remark" value="">
                    </div>
                </div>
            </div>
        </form>
      <form name="order" data-order="5eef941d-b172-11ec-9a20-eeeeeeeeeeee" action="">
            <input type="hidden" name="flowInstanceId" value="5eef941d-b172-11ec-9a20-eeeeeeeeeeee">
            <input type="hidden" name="taskId" value="5f906807-b172-11ec-9a20-eeeeeeeeeeee">
            <div class="order-wrapper">
                <div class="flex-content order">
                    <div class="orderInfo">
                        <img class="mgn-icon" src="/ibop/business/ufc/productionlog/image/Management_2.png" alt="">
                        <span class="tit">测试3</span>
                        <a class="detail-link" name="detail-link">查看详情</a>
                    </div>
                    <div class="orderOption">
                        <label> <input type="radio" name="next" value="0" checked="">通过</label>
                        <label> <input type="radio" name="next" value="1">不通过</label>
                    </div>
                </div>
                <div class="flex-content">
                    <div class="label">批量日志评价:</div>
                    <div class="operate">
                        <input type="text" name="remark" value="">
                    </div>
                </div>
            </div>
        </form></div>

    </div>
    <div class="commit-btn">
        <div>
            <button id="commit">提交</button>
            <button id="cancel-btn">取消</button>
        </div>
    </div>
</div>

全选按钮点击事件

 /**
     * "全部通过" 全选的单选按钮事件
     */
    $('#passAll').click(function () {
        let passes = $('input[name="next"][value = "0"]'); //获取所有的 "通过" 单选按钮
        let denies = $('input[name="next"][value = "1]');   //获取所有的 "不通过" 单选按钮
        $.each(denies, function (index, item) { //遍历所有的 "不通过"单选框
            $(item).prop("checked", false); //取消选中所有"不通过"单选按钮
        })
        $.each(passes, function (index, item) { //遍历所有的 "通过"单选框
            $(item).prop("checked", true);  //  选中所有"通过"单选按钮
        })

        let checked = $(this).data('checked')   //获取 全选按钮的 "data-checked" 属性
        setChecked(checked, this, $('#denyAll'))    //更改data-checked属性,并判断在已选中的状态下取消选中
    })

    /**
     * 全部不通过
     */
    $('#denyAll').click(function () {
        let passes = $('input[name="next"][value = "0"]');
        let denies = $('input[name="next"][value = "1"]');
        $.each(denies, function (index, item) {
            $(item).prop("checked", true);
        })
        $.each(passes, function (index, item) {
            $(item).prop("checked", false);
        })

        let checked = $(this).data('checked')
        setChecked(checked, this, $('#passAll'))
    })

    function setChecked(checked, target, oppo) {
        switch (checked) {
            //如果当前的选中状态 data-checked = 0 (未选中),则设置data-checked = 1 选中
            case 0:
                $(target).data('checked', 1)
                $(oppo).data('checked', 0)
                break
            //如果当前的选中状态 data-checked = 1 (选中的状态),则取消选中状态
            case 1:
                $(target).data('checked', 0)
                $(target).prop('checked', false)
                break
        }
    }
实现JS单选按钮全选按钮选中的基本思路是:监听每个单选按钮点击事件,如果所有的单选按钮都被选中,则将全选按钮选中。以下是一个简单的实现方法: HTML代码: ``` <input type="checkbox" id="select-all"> 全选 <input type="checkbox" class="checkbox-item"> 选项1 <input type="checkbox" class="checkbox-item"> 选项2 <input type="checkbox" class="checkbox-item"> 选项3 ``` JS代码: ``` // 获取全选按钮和每个复选框 var selectAll = document.getElementById('select-all'); var checkBoxes = document.getElementsByClassName('checkbox-item'); // 给每个复选框添加点击事件监听器 for (var i = 0; i < checkBoxes.length; i++) { checkBoxes[i].addEventListener('click', function() { // 检查是否所有的复选框都被选中 var allChecked = true; for (var j = 0; j < checkBoxes.length; j++) { if (!checkBoxes[j].checked) { allChecked = false; break; } } // 如果所有的复选框都被选中,则将全选按钮选中 if (allChecked) { selectAll.checked = true; } else { selectAll.checked = false; } }); } ``` 在上述代码中,我们首先通过 `getElementById` 方法获取了全选按钮,然后通过 `getElementsByClassName` 方法获取了所有的复选框。接下来,我们遍历每个复选框,给它们添加了一个点击事件监听器。当每个复选框被点击,我们会检查所有的复选框是否都被选中,如果是,则将全选按钮选中。如果不是,则取消全选按钮的选中状态。这样,当所有的复选框都被选中全选按钮也会被自动选中
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值