layui-xm-select怎么实现远程搜索

千婷酱_4710

千婷酱_4710

2026-09-18

577人浏览

原创

远程搜索需开启remote并关闭searchable,输入值由后端过滤;接口须接收search参数并返回code=0及含value/name的data数组;需手动添加防抖;clearsearchonselect可清空搜索词但不影响选中项。

layui-xm-select怎么实现远程搜索

远程搜索必须开启 remote 且禁用 searchable 的默认行为

layui-xm-select 的远程搜索不是“在本地输入、再发请求”,而是把输入值直接传给后端,由后端完成过滤。如果你同时开了 searchable: trueremote,会触发两次搜索(一次本地模糊匹配,一次远程),结果错乱或空白。

正确做法是:只开 remote,关掉 searchable,让组件把输入框内容原样交给你的 remote 函数处理:

xmSelect.render({
  el: '#select',
  remote: {
    url: '/api/options',
    // 必须返回 {code: 0, data: [...]}, 否则解析失败
    // 输入值会作为 params.search 自动带上
  },
  searchable: false, // 关键!否则本地搜索会干扰
  // 不要设 data,否则初始化就加载静态数据,覆盖远程逻辑
})

remote.url 接口必须接收 search 参数并返回标准格式

xm-select 默认把用户输入的关键词拼成 search=xxx 作为 query 参数发起 GET 请求。后端接口必须能接收并响应这个参数,且返回结构严格为:

  • code === 0 表示成功(非 200 状态码也行,但 code 字段必须存在)
  • data 是数组,每个元素至少含 valuename 字段(name 用于下拉显示)
  • 如果返回空数组 [],下拉列表就为空;返回 null 或字段缺失会报错或无反应

示例请求 URL:/api/options?search=java
示例响应体:

{
  "code": 0,
  "data": [
    {"value": "java-1", "name": "Java 开发工程师"},
    {"value": "java-2", "name": "Java 架构师"}
  ]
}

输入延迟与防抖得自己加在 remote 函数里

xm-select 自带的 remote 没有内置防抖,连续输入会频繁发请求。必须手动包装一层防抖逻辑,否则容易触发后端限流或卡 UI:

深蓝色网站后台管理系统layui框架模板-AdminPro
深蓝色网站后台管理系统layui框架模板-AdminPro

一款深蓝色网站后台管理系统layui框架模板

下载
  • layui.util.debounce(Layui 2.8+ 自带)或自己写个简单定时器
  • 把原始 url 替换为自定义函数,在函数内做防抖 + 请求
  • 注意:函数必须返回 Promise,且 resolve 的数据结构和上面一致

简版防抖示例:

const searchFn = layui.util.debounce(function(val) {
  return new Promise((resolve) => {
    if (!val.trim()) return resolve({code: 0, data: []});
    axios.get('/api/options', {params: {search: val}})
      .then(res => resolve(res.data))
      .catch(() => resolve({code: 0, data: []}));
  });
}, 300);

xmSelect.render({
  el: '#select',
  remote: searchFn,
  searchable: false
})

选中后清空搜索词但保留已选项,需配合 initValueclearSearchOnSelect

远程搜索场景下,用户选中一项后,输入框常残留关键词,但下拉已关闭,体验割裂。官方提供 clearSearchOnSelect: true 可清空输入框,但要注意两点:

  • 它只清空搜索词,不影响已选中的值(initValue 或已选状态不受影响)
  • 如果用了 multiple: true,每次选中都会清空,可能打断连续多选 —— 这时建议关掉它,改用监听 on: select 手动控制
  • 若初始化带默认值,务必通过 initValue 传入 value 数组,而不是靠 data 静态渲染,否则远程模式下默认项不显示

容易被忽略的是:当后端返回的数据中 value 是数字类型(如 123),而你 initValue 传了字符串 "123",会导致默认项无法高亮 —— 值类型必须完全一致。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
ajax教程
ajax教程

php中文网为大家带来ajax教程合集,Ajax是一种用于创建快速动态网页的技术。通过在后台与服务器进行少量数据交换,Ajax可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。php中文网还为大家带来ajax的相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

2023.06.14

2200

4

ajax中文乱码解决方法
ajax中文乱码解决方法

ajax中文乱码解决方法有设置请求头部的字符编码、在服务器端设置响应头部的字符编码和使用encodeURIComponent对中文进行编码。本专题为大家提供ajax中文乱码相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.31

340

5

ajax传递中文乱码怎么办
ajax传递中文乱码怎么办

ajax传递中文乱码的解决办法:1、设置统一的编码方式;2、服务器端编码;3、客户端解码;4、设置HTTP响应头;5、使用JSON格式。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.11.15

2033

5

ajax网站有哪些
ajax网站有哪些

使用ajax的网站有谷歌、维基百科、脸书、纽约时报、亚马逊、stackoverflow、twitter、hacker news、shopify和basecamp等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.09.24

1121

6

AI视频生成软件推荐
AI视频生成软件推荐

本专题汇总了当前主流的AI视频生成软件推荐与排行榜单,涵盖seko、AniShort、剧云、Lovart、LiblibAI及立刻mv等热门工具。同时整理了各软件在文生视频、图生视频、时长限制、画质表现及免费额度等方面的差异对比,助您快速选对适合创作需求的AI视频生成工具。

2026.09.16

160

9

ai生成视频的工具免费版合集
ai生成视频的工具免费版合集

本专题汇总了当前免费AI生成视频工具的排行榜与推荐清单,涵盖seko、讯飞智作、AniShort及剧云、Lovart等多模型集成平台。同时整理了各工具的免费额度、输出时长、水印政策及适用场景差异,助您快速选择合适工具开启AI视频创作。

2026.09.16

60

10

Pandas时间序列分析与可视化报表
Pandas时间序列分析与可视化报表

本专题整理Pandas日期转换、时间索引、重采样、滚动窗口、时区处理、plot绘图、Styler表格样式和报表输出方法。

2026.09.16

60

23

Pandas数据筛选索引与清洗处理
Pandas数据筛选索引与清洗处理

本专题整理Pandas中的loc、iloc、条件筛选、query查询、缺失值处理、重复值删除、类型转换和字符串列清洗方法。

2026.09.16

40

25

Pandas数据读取导入与文件导出处理
Pandas数据读取导入与文件导出处理

本专题整理Pandas读取CSV、Excel、JSON、SQL、Parquet等文件的方法,以及to_csv、to_excel、to_sql和to_parquet等常用数据导出流程。

2026.09.16

40

27

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
ThinkPHP配置开发与CMS后台实战
ThinkPHP配置开发与CMS后台实战

共87课时 | 12.3万人学习

第二十三期_综合实战
第二十三期_综合实战

共89课时 | 10.5万人学习

Layui 快速入门精讲
Layui 快速入门精讲

共5课时 | 1.6万人学习