You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在jQuery中传递复选框选中状态至DataTables表格

解决DataTables新增行同步模态框复选框选中状态问题

现有一个添加用户的模态表单,提交后数据会插入到DataTables表格中。目前姓名字段已能正常传递,但模态框里复选框的选中/未选中状态无法同步到表格对应行的复选框上。

原模态表单代码

<div id="addUser" class="modal fade" role="dialog">
<div class="modal-dialog">
    <div class="modal-content">
        <div class="modal-body">
            <div>
                <label>Full Name</label>
                <div>
                    <input class="form-control" id="fullname" type="text" required/>
                </div>
            </div>

            <div >
                <label>Permissions</label>
                <div>
                    <input type="checkbox" id="add" value="Add" data-parsley-multiple="status">
                    <label>Add</label>
                    <input type="checkbox" id="edit" value="Edit" data-parsley-multiple="status">
                    <label>Edit</label>
                    <input type="checkbox" id="delete" value="Delete" data-parsley-multiple="status">
                    <label>Delete</label>
                </div>
            </div>
            
            <div>
                <div class="col-12">
                    <button class="btn" id="saveUser">Add</button>
                </div>
            </div>
        </div>
    </div>
</div>

原JS代码

$("#saveUser").click(function () {
    t.row.add(['', 
        '<input class="form-control" type="text" name="fullname[]" value="'+$("#fullname").val()+'" readonly>',
        '<input class="form-control" type="checkbox" name="permissions[]" value="'+$("#add").val()+'" data-parsley-multiple="status">',
        '<input class="form-control" type="checkbox" name="permissions[]" value="'+$("#edit").val()+'" data-parsley-multiple="status">',
        '<input class="form-control" type="checkbox" name="permissions[]" value="'+$("#delete").val()+'" data-parsley-multiple="status">',
    ]).draw(false); 
});

修改方案

要实现选中状态同步,只需在生成表格复选框时,根据模态框对应复选框的选中状态动态添加checked属性。修改后的JS代码如下:

$("#saveUser").click(function () {
    // 获取模态框中复选框的选中状态
    const isAddChecked = $("#add").is(":checked") ? "checked" : "";
    const isEditChecked = $("#edit").is(":checked") ? "checked" : "";
    const isDeleteChecked = $("#delete").is(":checked") ? "checked" : "";

    t.row.add(['', 
        '<input class="form-control" type="text" name="fullname[]" value="'+$("#fullname").val()+'" readonly>',
        `<input class="form-control" type="checkbox" name="permissions[]" value="${$("#add").val()}" ${isAddChecked} data-parsley-multiple="status">`,
        `<input class="form-control" type="checkbox" name="permissions[]" value="${$("#edit").val()}" ${isEditChecked} data-parsley-multiple="status">`,
        `<input class="form-control" type="checkbox" name="permissions[]" value="${$("#delete").val()}" ${isDeleteChecked} data-parsley-multiple="status">`,
    ]).draw(false); 

    // 可选:清空模态框表单,方便下次添加
    $("#fullname").val('');
    $("#add, #edit, #delete").prop('checked', false);
});

说明

  • 使用$("#id").is(":checked")判断复选框是否被选中,选中则返回checked字符串,否则返回空字符串
  • 用模板字符串(反引号)拼接HTML,更清晰地插入动态属性
  • 可选添加表单清空逻辑,提升用户操作体验

内容的提问来源于stack exchange,提问作者boldsinas101

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 05:06:35