带有全选功能的多选框

技术:冒泡、change事件、checked属性

冒泡

change事件: checkbox 自带的事件

在选项改变时触发

checked属性: checkbox自带的属性

选中时值为true 反之为false

<div id='app'>
        <label for="num1"><input type="checkbox" name="num" id="num1" value="1">1</label>
        <label for="num2"><input type="checkbox" name="num" id="num2" value="2">2</label>
        <label for="num3"><input type="checkbox" name="num" id="num3" value="3">3</label>
        <label for="num4"><input type="checkbox" name="num" id="num4" value="4">4</label>    
        <label for="numall"><input type="checkbox" id="numall">全选</label>    
    </div>
    <script>
        function showResult(){
            checkbox.forEach((x,index)=>{
                console.log(index+':'+x.checked+'\n')
            })
        }
        function selectAll(){
            let result = checkbox[0].checked
            if(result){
                checkbox.forEach((x)=>{
                    x.checked = false
                })
            }else{
                checkbox.forEach((x)=>{
                    x.checked = true
                })
            }
        }
        var app = document.getElementById('app')
        var checkbox = document.getElementsByName('num')
        var numall = document.getElementById('numall')
        app.addEventListener('change',showResult)
        numall.addEventListener('change',selectAll)
    </script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当使用 Ant Design 和 TypeScript 来创建带有 key 值的多选框组,并实现全选功能时,你可以按照以下步骤进行操作: 1. 首先,确保你已安装并正确导入了 `antd` 组件库以及相关依赖。 2. 在你的组件中,创建一个状态变量来保存选中的复选框值以及全选状态。同时,定义一个选项列表数组,每个选项都包含一个唯一的 key 值。 ```tsx import React, { useState } from 'react'; import { Checkbox } from 'antd'; const options = [ { key: 'option1', label: 'Option 1' }, { key: 'option2', label: 'Option 2' }, { key: 'option3', label: 'Option 3' }, ]; const CheckboxGroupExample: React.FC = () => { const [checkedList, setCheckedList] = useState<string[]>([]); const [indeterminate, setIndeterminate] = useState<boolean>(false); const [checkAll, setCheckAll] = useState<boolean>(false); // 处理单个复选框的选中 const handleCheckboxChange = (checkedValues: string[]) => { setCheckedList(checkedValues); setIndeterminate(!!checkedValues.length && checkedValues.length < options.length); setCheckAll(checkedValues.length === options.length); }; // 处理全选框的选中 const handleCheckAllChange = (e: React.ChangeEvent<HTMLInputElement>) => { const checked = e.target.checked; setCheckedList(checked ? options.map(option => option.key) : []); setIndeterminate(false); setCheckAll(checked); }; return ( <div> <div style={{ borderBottom: '1px solid #E9E9E9' }}> <Checkbox indeterminate={indeterminate} onChange={handleCheckAllChange} checked={checkAll} > 全选 </Checkbox> </div> <br /> <Checkbox.Group options={options} value={checkedList} onChange={handleCheckboxChange} /> </div> ); }; export default CheckboxGroupExample; ``` 在上面的示例中,我们定义了一个选项列表数组 `options`,每个选项都包含一个 `key` 值和一个显示的 `label`。然后,我们使用 `useState` 钩子来创建了三个状态变量:`checkedList` 用于保存选中的复选框值,`indeterminate` 用于控制全选框的中间状态,`checkAll` 用于控制全选框的选中状态。 我们还定义了两个处理函数:`handleCheckboxChange` 处理单个复选框的选中,`handleCheckAllChange` 处理全选框的选中。在 `handleCheckboxChange` 中,我们更新了选中的复选框值,并根据选中的数量来更新全选框的状态。在 `handleCheckAllChange` 中,我们根据全选框的选中状态来更新所有复选框的值,并更新全选框的状态。 3. 最后,在你的页面或应用中使用这个组件即可。 ```tsx import React from 'react'; import CheckboxGroupExample from './CheckboxGroupExample'; const App: React.FC = () => { return ( <div> <CheckboxGroupExample /> </div> ); }; export default App; ``` 在上面的示例中,我们在主应用组件中使用 `CheckboxGroupExample` 组件。 这样就创建了一个带有 key 值的多选框组,并实现了全选功能。你可以根据实际需求调整选项列表和样式。 希望这能帮到你!如果还有其他问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值