layui,下拉框模糊搜索功能

原文地址:https://www.cnblogs.com/weiyangoo/articles/7097123.html

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>layui</title>
  <meta name="renderer" content="webkit">
  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
  <link rel="stylesheet" href="layui/layui/css/layui.css"  media="all">
  <!-- 注意:如果你直接复制所有代码到本地,上述css路径需要改成你本地的 -->
</head>
<body>
<form class="layui-form" action="">
<div class="layui-inline">
      <label class="layui-form-label">搜索选择框</label>
      <div class="layui-input-inline">
        <select name="modules" lay-verify="required" lay-search="">
          <option value="">直接选择或搜索选择</option>
          <option value="1">layer</option>
          <option value="2">form</option>
          <option value="3">layim</option>
          <option value="4">element</option>
          <option value="5">laytpl</option>
          <option value="6">upload</option>
          <option value="7">laydate</option>
          <option value="8">laypage</option>
          <option value="9">flow</option>
          <option value="10">util</option>
          <option value="11">code</option>
          <option value="12">tree</option>
          <option value="13">layedit</option>
          <option value="14">nav</option>
          <option value="15">tab</option>
          <option value="16">table</option>
          <option value="17">select</option>
          <option value="18">checkbox</option>
          <option value="19">switch</option>
          <option value="20">radio</option>
        </select>
      </div>
    </div>
  </div>
  </form>
  <script src="layui/layui/layui.js" charset="utf-8"></script>
<!-- 注意:如果你直接复制所有代码到本地,上述js路径需要改成你本地的 -->
<script>
layui.use('form',function(){});<!--加载form模块-->
</script>
</body>
</html>

注意:layui表单的使用依赖加载模块:form,所以一定要在末尾加上

<script>
//Demo
layui.use('form', function(){
  var form = layui.form();
  
  //do something
  
});
</script>

如果不加载form模块,select、checkbox、radio等将无法显示,并且无法使用form相关功能

 

总结,如果是已经在用layui的,忽略上面的内容,只要给 select 标签加个  lay-search="" 属性就可以实现搜索选择

### 实现Layui Select组件中的模糊搜索功能 为了实现在Layui `select` 组件中添加模糊搜索的功能,可以利用Layui内置的`lay-filter`事件监听器以及自定义JavaScript逻辑来处理输入框的变化,并通过AJAX请求获取匹配的数据[^2]。 #### HTML结构 首先,在HTML部分创建一个带有特定ID的选择框: ```html <div class="layui-form-item"> <label class="layui-form-label">选择</label> <div class="layui-input-block"> <select id="searchSelect" lay-search="" lay-filter="demo"></select> </div> </div> ``` 这里使用了`lay-search`属性使得该下拉列表能够响应用户的键盘输入并显示过滤后的结果;同时设置了`lay-filter="demo"`以便后续绑定事件处理器。 #### JavaScript初始化与配置 接着,在脚本文件中完成必要的初始化工作及事件绑定: ```javascript layui.use(['form', 'jquery'], function(){ var form = layui.form; var $ = layui.jquery; // 初始化时加载全部数据项 $.getJSON('/api/getOptions', function(data){ var optionsHtml = ''; data.forEach(function(item){ optionsHtml += `<option value="${item.value}">${item.text}</option>`; }); $('#searchSelect').html(optionsHtml); form.render('select'); // 渲染select元素 // 添加change事件监听器用于实时查询 form.on('select(demo)', function(obj){ console.log(obj.elem); // 获取当前被选中的DOM对象 console.log(obj.value); // 获得你所需要的价值 // 如果需要在此基础上做更多事情比如发送Ajax请求更新其他UI组件... }); // 输入变化触发自动补全/筛选 $(document).on('input','#searchSelect',function(e){ let keyword=$(this).val(); if(keyword.length>0){ $.ajax({ url:'/api/searchOption', type:'POST', contentType:"application/json", data:JSON.stringify({query:keyword}), success:function(res){ updateSelectOptions($('#searchSelect'), res.data); form.render('select'); } }) }else{ loadAllOptions(); // 当清空输入框时恢复原始状态 } }) function loadAllOptions() { $.getJSON('/api/getOptions', function(data){ var optionsHtml = ''; data.forEach(function(item){ optionsHtml += `<option value="${item.value}">${item.text}</option>`; }); $('#searchSelect').html(optionsHtml); form.render('select'); }); } function updateSelectOptions($element, newData) { const newOptions = newData.map(option => `<option value="${option.value}" ${option.selected ? "selected" : ""}>${option.text}</option>` ).join(''); $element.html(newOptions); } }); }); ``` 上述代码展示了如何结合服务器端API接口实现基于关键词的即时检索,并刷新`<select>`标签内的选项。每当用户改变输入内容时都会发起新的HTTP POST请求至指定URL `/api/searchOption` 来获取符合条件的结果集,之后再调用辅助函数`updateSelectOptions()` 更新DOM节点。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值