带模糊查询的select下拉框

最近做了一个功能,在下拉框中有上千条选项,这种情况下肯定不能一个一个地去找,所以在下拉框中添加了一个模糊查询的功能,很多资料都有各种问题,下面是我实现的完整的实例:
下面是效果图:
这里写图片描述

可以看到文本是可以编辑的,可以在这里输入内容,下面是查询之后的效果:
这里写图片描述

所有带“灰色”字段的内容都显示出来了。

下面将实现过程,首先要导入js和css文件:

<link rel="stylesheet" href="assert/select/combo.select.css">
<script src="assert/select/jquery.combo.select.js"></script>

文件下载路径:

http://download.youkuaiyun.com/detail/cat_pp/9698493

*

收了大家一个积分,想给的就给个积分,没有也没关系,给我留言或者加qq:3393055725(荒),直接分享给大家

*

接下来就是前台和js部分了,先看HTML

<select id="select">
    <option value="0">请选择</option>
    <c:forEach items="${test}" var="test">
        <option value="${test.data}">${test.data }</option>
    </c:forEach>
</select>

用forEach标签输出option中的内容,这里使用request.setAttribute(“test”,dataSource)将dataSource实体类赋值给test,在前台通过EL表达式获取数据循环出来,效果和多个option标签是一样的。

接下来是js部分

$(function){
    $("#select").comboSelect();
}

这部分就不详细解释了,主要就是通过id获取到select标签,然后调用comboSelect方法就可以了。

很好用,希望能帮到大家

### 实现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节点。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值