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>
相关推荐
英俊潇洒美少年7 小时前
Vue 生产环境打包:SourceMap、压缩、混淆、加密全解 + 最佳实践
前端·javascript·vue.js
巴博尔8 小时前
UNIAPP中NVUE页面 动画
android·前端·javascript·ios·uni-app
猫头虎-前端技术8 小时前
JS 作用域与闭包:从变量提升到闭包陷阱的超详细解析
开发语言·javascript·云计算·bootstrap·ecmascript·openstack·perl
她说人狗殊途10 小时前
基于 vue-cli 创建
前端·javascript·vue.js
AZaLEan__11 小时前
前端移动端适配与 Bootstrap
前端·bootstrap·html
大家的林语冰11 小时前
Deno 2.8 正式发布,再次超越 Bun,史上最大的次版本升级诞生!
前端·javascript·node.js
渣渣xiong11 小时前
从零开始:前端转型AI agent直到就业第五十七天-第五十八天
前端·人工智能·python
影寂ldy11 小时前
C#数组的属性和方法(Clear / Copy / IndexOf )
开发语言·javascript·c#
Brave & Real11 小时前
小程序 const 在js中以及与同类的var和let之间的差异
javascript·微信小程序·小程序
AI周红伟11 小时前
周红伟:长鑫科技(CXMT)财务全景分析
前端·chrome·科技