layui动态生成复选框及向后端传递选中复选框的值

本文介绍了使用layui库在前端动态生成复选框,展示数据库标签,并实现选中复选框的值传递到后端。通过jQuery获取选中复选框的值,将值放入数组并提交到后台。在后端接收到数据后,对字符串进行处理。文章还分享了代码实现过程和注意事项。
摘要由CSDN通过智能技术生成

layui动态生成复选框及向后端传递选中复选框的值

一、动态生成复选框

问题:将数据库的标签在前端以复选框的形式展示出来,如下图所示

在这里插入图片描述

解决:
<div class="layui-form-item">
            <label class="layui-form-label">兼职标签</label>
            <div class="layui-input-block" id="jobTypeDiv"></div>
            <div class="layui-form-mid" style="color: red;margin-left: 115px;">*备注:可多选,前三个标签需且仅需选择一个</div>
        </div>
<script type="text/javascript">

success: function () {
                    var div = $("#jobTypeDiv");
                    $("#dataFrm")[0].reset();//清空表单
                    div.html("");
                    //进入/labelType/loadAllLabelType的方法,返回的objs是一个list集合,集合中的每个元素均为Label实体类(包含id和label两个属性)
                    $.get("/labelType/loadAllLabelType", function (objs) { 
                        var labelTypes = objs.data;
                        $.each(labelTypes, function (index, item) {
                            if (index === 0) { //默认第一个是被选中的,设置为checked="checked"
                                div.append('<input type="checkbox" checked="checked" name="labelType"  value="' + item.id + '" title="' + item.label + '">');
                            } else {
                                div.append('<input type="checkbox" name="labelType" value="' + item.id + '" title="' + item.label + '">');
                            }
                        });
                        form.render("checkbox");
                    });
                }
</script>

其中每个复选框选项的 value 值为 Label.id,title 为 Label.label

二、向后端传递选中复选框的值

问题:将选中复选框的值传递到后端,如下图所示

在这里插入图片描述

解决:
//监控提交事件
        form.on("submit(doSubmit)", function (data) {
            
            var labelArray = $('input[name="labelType"]');
            //获取input[name="labelType"]的值
            var labels = [];
            for (k in labelArray) {
                if (labelArray[k].checked) {
                //获取所有选中的复选框,并将其值放入数组中
                    labels.push(labelArray[k].value);
                }
            }
            //替换 data.field.labels的数据
            data.field.labels=labels;

            $.post("/partTime/addAndUpdatePartTime", data.field, function (res) {
                if (res.code === 200) {
                   layer.msg(res.msg);
                } else {
                    layer.msg(res.msg, {icon: 2}, {time: 2000})
                }
                tableIns.reload();
            });
            return false;
        });

在写实体类的时候没有考虑到 labels 这个属性,是后来才加上的

 /**
  * 方便前端传输复选框的数据
  */
    private String labels;

在后端就可以获取这个属性的值,再进行字符串的剪切等操作

//以","切割前端传递的复选框数据(以JSON字符串类型传递过来的)
String[] split = partTimeDetailsVo.getLabels().split(",");
System.out.print("split = ");
for (String s : split) {
   System.out.print(s);
}
//输出结果为“split = 34578”

以上是个人在学习过程中的一些理解和记录,如有错误,欢迎指正批评~~~

参考博客:https://blog.csdn.net/weixin_39106990/article/details/106103755

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值