table里面复选框切换为单选,点击每一行也做复选框的选择切换

本文介绍如何使用JavaScript实现表格中的单选功能,即当点击表格某一行时,该行前的单选按钮会被选中,并确保同一时刻只能有一个单选按钮处于选中状态。同时提供了具体的HTML结构和JavaScript代码实现。

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

JS
// 当表格的一整行被选中的时候  前面的单选按钮也被选择    并且要是单选  
    // 先将复选框做成单选   
    var flag = false;
    $('.xuanze').click(function(){
        $('.xuanze').removeAttr('checked');
        $(this).prop('checked','checked');
        flag = true;
    }); 
    // 设置点击这一行那么他那行所对应的复选框也被选中
    $(".tr").click(function(){
        // 获得tr下面的第一个td 
        var td = $(this).children(":first");
        // 获得复选框  
        var checked = td.children(":first");
        // 复选框自己没有选中   并且以前的为选中状态  
        if(checked.prop('checked') == true && !flag){
            checked.removeAttr('checked');
        }else{
            // 先将所有全部切换为为选中状态  
            $('.xuanze').removeAttr('checked');
            checked.prop('checked',true);
        }
    });

HTML

<table class="table table-hover table-bordered">
            <thead style="background:#ddd;">
            <tr>
            	<th>选择</th>
                <th>区域名称</th>
                <th>林种</th>
                <th>地类</th>
                <th>优势树种</th>
                <th>负责小班</th>
            </tr>
            </thead>
            <tbody>
            <tr class='tr'>
            	<td class='td'><input type='checkbox' name='xuanze' class='xuanze'></td>
                <td>asdfaf</td>
                <td>asdfsaf</td>
                <td>adfsaf</td>
                <td>asdfsaf</td>
                <td>asdfasf</td>
            </tr>
            <tr class='tr'>
            	<td><input type='checkbox' name='xuanze' class='xuanze'></td>
                <td>sasafdasdf</td>
                <td>asdfasf</td>
                <td>asdfasf</td>
                <td>asdfsaf</td>
                <td>asdfasdf</td>
            </tr>
            <tr class='tr'>
           		<td><input type='checkbox' class='xuanze'></td>
                <td>asdfsafd</td>
                <td>asdfasf</td>
                <td>sadfsaf</td>
                <td>sadfsafda</td>
                <td>asfdsafasf</td>
            </tr>
            <tr class='tr'>
           		<td ><input type='checkbox' class='xuanze'></td>
                <td>afdafasf</td>
                <td>asdfsafsafd</td>
                <td>asdfasfd</td>
                <td>sadfsafas</td>
                <td>asdfasfd</td>
            </tr>
            </tbody>
        </table>



缺陷    点击里面的复选框的时候不能取消 


### 实现 Vue2 中 `el-table` 组件的单选模式 为了在 Vue2 项目中使用 Element UI 的 `el-table` 组件并将复选框功能改为单选模式,可以采用监听行点击事件的方式实现只保留最后一次选中的项。以下是具体方法: #### HTML 结构 定义表格结构,并绑定相应的事件处理函数。 ```html <template> <div> <el-table :data="tableData" @row-click="handleRowClick"> <!-- 表格列配置 --> <el-table-column prop="date" label="日期"></el-table-column> <el-table-column prop="name" label="姓名"></el-table-column> <el-table-column prop="address" label="地址"></el-table-column> </el-table> </div> </template> ``` #### JavaScript 方法 通过设置当前选中行的状态来控制单选逻辑,在每次点击新行时清除之前的选中状态。 ```javascript <script> export default { data() { return { tableData: [ // 初始化表格数据... ], selectedRowIndex: null, currentSelectedRow: {} }; }, methods: { handleRowClick(row, column, event) { const currentIndex = this.tableData.indexOf(row); if (this.selectedRowIndex !== null && this.selectedRowIndex !== currentIndex) { // 清除之前的选择样式 this.$refs.multipleTable.toggleRowSelection( this.tableData[this.selectedRowIndex], false ); } // 更新最新一次选择的信息 this.selectedRowIndex = currentIndex; this.currentSelectedRow = row; // 设置新的选择样式 this.$nextTick(() => { this.$refs.multipleTable.clearSelection(); this.$refs.multipleTable.toggleRowSelection(row, true); }); } } }; </script> ``` 注意这里假设有一个名为 `multipleTable` 的引用指向 `<el-table>` 元素,可以通过给该元素添加属性 `ref="multipleTable"` 来创建这个引用关系[^1]。 此外还需要确保模板中有对应的 `ref` 属性指定以便于后续操作DOM节点。 上述代码实现了当用户点击任意一行时会自动取消其他所有已选项并仅保持此次所点行为被选中效果;同时也保存了最新的选中记录供外部调用或其他业务逻辑使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值