layui下拉框xm-select自定义搜索使用方法

xm-select介绍

始于Layui, 下拉选择框的多选解决方案

git地址:https://gitee.com/maplemei/xm-select

文档说明:https://codecp.tech/static/xm-select/#/component/options

什么情况下使用

  • 下拉框的数据量比较大
  • 需要支持下拉框的搜索

如何使用自定义搜索

  • 引用xm-select,使用最新版本,老版本update方法无法使用
    <script type="text/javascript" th:src="@{/res/js/xm-select-1.2.2.js}"></script>

  • 定义下拉框的位置
    <div id="demo1"></div>

  • 调用reader进行渲染

    let list = [];
    let pageSize = 10;
    if(demoSelect == null){
    orgNameSelect = xmSelect.render({
    el: '#demoSelect',
    data: [], // 数据
    paging: true, // 是否分页
    pageSize: pageSize, // 每页数量
    max:10, // 最多可以选的个数
    // 触发监听
    on: function(data){
    // 监听到的数据类型包含 name,value
    let arr = data.arr;
    let checkIdArr = [];
    let checkNameArr = [];
    if(arr.length > 0){
    arr.forEach((item) => {
    checkIdArr.push(item.value);
    checkNameArr.push(item.name);
    });
    ("#id").val(checkIdArr.join(",")); ("#name").val(checkNameArr.join(","));
    }else{
    ("#id").val(""); ("#name").val("");
    }
    },
    // 样式
    theme: {
    color: '#4991E1',
    },
    // radio: true,// 单选
    // clickClose: true,// 选中后关闭
    pageRemote: true,// 是否开启远程分页
    pageEmptyShow: false,// 显示空页
    remoteSearch: true,// 远程搜索
    // 远程搜索方法
    // val: 当前搜索值, cb(arr, totalPage): 回调函数, 需要回调一个数组, 结构同data, 远程分页需要第二个参数: 总页码
    // show: 下拉框显示状态, pageIndex: 分页下当前页码
    remoteMethod: function(val, cb, show, pageIndex){
    // 调用后台接口
    $.ajax({
    url: "/getList?param=111,
    type: "GET",
    dataType: "JSON",
    success: function(resp) {
    if (resp.code === SUCCESS_CODE) {
    if(resp.data.total > 0){
    let data = resp.data.list;
    list = [];
    for(let i=0; i<data.length; i++){
    list.push({"name":data[i].orgName,"value":data[i].orgId});
    }
    // 页码
    let pages = Math.ceil(resp.data.total / pageSize);
    cb(list,pages);
    }else{
    // 初始化为空
    cb([],0);
    }
    }
    }
    });
    },
    // 开启搜索
    filterable: true,
    });
    }else{
    console.log("更新");
    // reset 会把已选中的数据清除 update方法只是更新,他们都可以重新触发一次remoteMethod
    orgNameSelect.reset();
    }

显示效果

相关推荐
anOnion3 小时前
构建无障碍组件之Checkbox pattern
前端·html·交互设计
IT枫斗者5 小时前
IntelliJ IDEA 2025.3史诗级更新:统一发行版+Spring Boot 4支持,这更新太香了!
java·开发语言·前端·javascript·spring boot·后端·intellij-idea
NGC_66115 小时前
二分查找算法
java·javascript·算法
享誉霸王6 小时前
15、告别混乱!Vue3复杂项目的规范搭建与基础库封装实战
前端·javascript·vue.js·前端框架·json·firefox·html5
a1117767 小时前
飞机躲避炸弹 网页游戏
前端·开源·html·threejs
滕青山7 小时前
URL编码/解码 核心JS实现
前端·javascript·vue.js
有马贵将7 小时前
【3】前端手撕-深浅拷贝
javascript
柳杉9 小时前
使用AI从零打造炫酷的智慧城市大屏(开源):React + Recharts 实战分享
前端·javascript·数据可视化
Highcharts.js10 小时前
玩转Highcharts气泡图|从散点图到气泡图:增加一个维度,数据可视化瞬间立体起来
javascript·信息可视化·散点图·highcharts·图表开发·气泡图·图表创建
颜酱10 小时前
差分数组:高效处理数组区间批量更新的核心技巧
javascript·后端·算法