一组checkbox 功能实现

本文介绍了如何在HTML和前端JavaScript中实现一组checkbox的功能。强调了在实现过程中应注意的细节,特别是避免使用某些可能导致问题的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在写后台时,会需要实现“一组checkbox”的功能,例如:
示例


html:
<p>
  <label for="zoneID">区服选择</label>
  <input type="text" name="zoneID" id="zoneID" readonly>
      <ul class="myList" id="zoneIDList" style="display: none;">
          <li><input type="checkbox" id="allServer">全选</li>
          <li><input type="checkbox" name="zoneIDCheckbox" class="subServer" value="10001">10001</li>
          <li><input type="checkbox" name="zoneIDCheckbox" class="subServer" value="10002">10002</li>
          <li><input type="checkbox" name="zoneIDCheckbox" class="subServer" value="10003">10003</li>
          <li><input type="checkbox" name="zoneIDCheckbox" class="subServer" value="10004">10004</li>
      </ul>
</p>

前端js实现:
// 复选框 显示 及 隐藏
$(document).ready(
    $('#zoneID').focus(function () {
        $('#zoneIDList').show();
    }),
);

// 区服选择 全选,取消全选,单选 实现
$(document).ready(function () {
// 判断 全选 是否取消
    var $subBox = $("input[type=checkbox][name='zoneIDCheckbox']");
    $subBox.click(function () {
        $('#allServer').prop('checked', $subBox.length == $subBox.filter(':checked').length ? true : false);
    });

// 全选 取消全选 功能
    $(document).on('click', '#allServer', function () {
        if ( $('#allServer').is(':checked')) {
            var text = '';

            $('.subServer').each(function () {
                $("input[type=checkbox][name='zoneIDCheckbox']").prop('checked', true);  // 全选

                var value = $(this).val();
                var checked = $(this).is(':checked');
                if (checked) {
                    text += value + '|';
                }
                $('#zoneID').val(text);
            });

        } else {
            $('.subServer').each(function () {
                $("input[type=checkbox][name='zoneIDCheckbox']").prop('checked', false);
                $('#zoneID').val('');
            })
        }
    });

// 单选 功能
    $(document).on('click', '.subServer', function () {
        var text = '';
        $('.subServer').each(function () {
            var value = $(this).val();
            var checked = $(this).is(':checked');
            if (checked) {
                text += value + '|';
            }
            $('#zoneID').val(text);
        })
    })
});
备注:

不要用:$(this).attr('checked', false);,会有bug!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值