Table 组件中复选框实现 选择一个其他复选框都禁用,取消选中,其他复选框取消禁用
时间: 2023-10-11 15:10:35 浏览: 193
可以通过监听复选框的 `change` 事件,来实现这个功能。具体步骤如下:
1. 给每个复选框设置一个相同的 class,用于选择器选择。
2. 给每个复选框都添加一个 `change` 事件监听函数,在事件处理函数中,判断当前复选框是否被选中,如果被选中则禁用其他的复选框;否则,取消禁用其他复选框。
3. 在事件处理函数中,需要使用 `querySelectorAll` 获取所有的复选框元素,然后循环遍历,对除了当前复选框以外的所有复选框进行禁用或取消禁用的操作。
具体代码实现如下:
HTML:
```html
<table>
<tr>
<td><input type="checkbox" class="checkbox" /></td>
<td>选项1</td>
</tr>
<tr>
<td><input type="checkbox" class="checkbox" /></td>
<td>选项2</td>
</tr>
<tr>
<td><input type="checkbox" class="checkbox" /></td>
<td>选项3</td>
</tr>
</table>
```
JavaScript:
```javascript
const checkboxes = document.querySelectorAll('.checkbox');
checkboxes.forEach(checkbox => {
checkbox.addEventListener('change', e => {
if (e.target.checked) {
checkboxes.forEach(cb => {
if (cb !== e.target) {
cb.disabled = true;
cb.checked = false;
}
});
} else {
checkboxes.forEach(cb => {
if (cb !== e.target) {
cb.disabled = false;
}
});
}
});
});
```
以上代码中,我们首先使用 `querySelectorAll` 获取所有的复选框元素,并且对每个复选框都添加了一个 `change` 事件监听函数。在事件处理函数中,我们首先判断当前复选框的选中状态,如果被选中,则循环遍历其他复选框,将它们禁用并且取消选中状态;否则,循环遍历其他复选框,将它们取消禁用状态。其中,我们使用 `cb !== e.target` 来判断当前遍历到的复选框是否是当前触发事件的复选框,如果是则不进行处理。
阅读全文