layui实现下拉框多选

引用layui第三方扩展实现下拉框选择渲染

第三方插件地址xmSelect下拉多选 xmSelect

实现效果



javascript 复制代码
//第三方扩展插件
<script type="text/javascript" src="${ctx }/config/layui/dist/xm-select.js"></script>
//jquery渲染
<script type="text/javascript" src="${ctx}/config/jquery-3.5.1/jquery-3.5.1.min.js"></script>
javascript 复制代码
 <div class="layui-input-inline" id="category" ></div>
        <!-- 添加一个隐藏的input元素,用来存储选中数据的value值 -->
        <input type="hidden" id="hiddenValue" name="category">
javascript 复制代码
//category 是前端的渲染页面下拉框,
    // 创建一个下拉选择框,并设置相关属性
    var category = xmSelect.render({
        el: '#category', // 将下拉选择框挂载到id为category的元素上
        toolbar: {//开启单选则不需要头部工具栏
            show: true, // 显示工具栏
            list: [ 'ALL', 'CLEAR'] // 工具栏上的选项列表
        },
        theme: {
            color: '#51495f', // 设置主题颜色
        },
        filterable: true, // 允许筛选
        paging: true, // 启用分页
        // radio: true,//单选
        pageSize: 5,
        on: function (data) {
            //arr:  当前多选已选中的数据
            var arr = data.arr;
            // 从选中数据中提取value值
            var value = arr[0].value;
            console.log(arr);
            console.log(value);
            // 存储所选数据的值,这里是在前端隐藏了书籍类别输入框,将提出出来的值写入到表单中便于提交到数据库中
            document.getElementById('hiddenValue').value = value;//这里是将我自己需要的值返回到前端界面,再提交表单的时候不需要将数据转化,当然你也可以自己摸索一下
            // <input type="hidden" id="hiddenValue" name="category">

        },
        data: [] // 初始化数据为空数组
    })
    // 发送一个GET请求,从后端获取所有分类信息
    $.ajax({
        url: ctx + '/book/getAllCategories', // 请求的URL
        type: 'GET', // 请求类型为GET
        success: function (data) { // 请求成功后执行的回调函数
            // 将后端返回的数据转换为前端需要的格式
            var newData = data.map(function (item) {
                return {name: item.categoryName, value: item.cateId};
            });
            // 更新下拉选择框的数据
            category.update({data: newData});
        }, error: function (error) { // 请求失败后执行的回调函数
            console.log('Error fetching data from backend: ' + error); // 在控制台输出错误信息
        }
    })
java 复制代码
controller:

   @RequestMapping("/getAllCategories")
    @ResponseBody
    public List<CategoryEntity> getAllCategories() {
        List<CategoryEntity> data = bookService.findAll();
        return data;
    }


service:
 List<CategoryEntity> findAll();

serviceimpl:
  @Override
    public List<CategoryEntity> findAll() {
        return categoryDao.findAll();
    }


dao:

 List<CategoryEntity> findAll();
xml 复制代码
  <select id="findAll" resultMap="cateMap"
            resultType="layui.library.manager.project.entity.CategoryEntity">
        SELECT *
        FROM tb_book_category
        order by cateId
    </select>
相关推荐
霍理迪17 分钟前
Vue的响应式和生命周期
前端·javascript·vue.js
李剑一21 分钟前
别再瞎写了!Cesium 模型 360° 环绕,4 套源码全公开,项目直接用
前端
小码哥_常39 分钟前
Android消息机制:Handler、Looper和Message的深度剖析
前端
小码哥_常41 分钟前
安卓开发新姿势:文件Picker全攻略,无痛适配不再难
前端
happymaker06261 小时前
web前端学习日记——DAY04
前端·学习
发现一只大呆瓜1 小时前
React-路由监听 / 跳转 / 守卫全攻略(附实战代码)
前端·react.js·面试
swipe2 小时前
为什么 RAG 一定离不开向量检索:从文档向量化到语义搜索的工程实现
前端·llm·agent
OpenTiny社区2 小时前
AI-Extension:让 AI 真的「看得到、动得了」你的浏览器
前端·ai编程·mcp
IT_陈寒2 小时前
Redis缓存击穿:3个鲜为人知的防御策略,90%开发者都忽略了!
前端·人工智能·后端
竹林8183 小时前
在Web3前端用Node.js子进程批量校验钱包,我踩了这些性能与安全的坑
javascript·node.js