/**
* 将Select转变为支持输入内容对Select的Option进行筛选的js
* var $select = $("select["+TriangleDefinition.HTML_DEF_ATTR_KEY_FILTER_SELECT+"]").filterSelect();
$(selectDOMRouteProcess).filterSelectReloadOption();// 把selectDOMRouteProcess变为可filterSelect
*/
$(document).ready(function(){
// 这段代码,是遍历所有拥有 TriangleDefinition.HTML_DEF_ATTR_KEY_FILTER_SELECT 属性的元素,并把他们变为可编辑
if($("select["+TriangleDefinition.HTML_DEF_ATTR_KEY_FILTER_SELECT+"]").length > 0){
$("select["+TriangleDefinition.HTML_DEF_ATTR_KEY_FILTER_SELECT+"]").filterSelect();
}
});
/**
* 将Select转化为FilterSelect
*/
$.fn.filterSelect = (function(){
return function(){
var $body = $("body");
this.each(function(i, v){
var inputVal = "";
if($(v).parent().is("div") && $(v).parent().attr("class") == "m-input-select"){
return false;// 如果当前Select已经是FilterSelect,则退出.
}
var $sel = $(v);// 得到Select的DOM
var $div = $('<div class="m-input-select" style="width:'+$sel.width()+'"></div>');//生成覆盖层的DIV,宽度等于原Select宽度
var $input = $("<input type='text' class='m-input' style='width:"+$sel.width()+"' />");
// var $wrapper = $("<div class='m-list-wrapper'><ul class='m-list'></ul></div>");
var $wrapper = $("<ul class='m-list'></ul>");
$div = $sel.wrap($div).hide().addClass("m-select").parent();
$div.append($input).append("<span class='m-input-ico'></span>").append($wrapper);
// 遮罩层显示 + 隐藏
var wrapper = {
show: function(){
$wrapper.show();
this.$list = $wrapper.find(".m-list-item:visible"); //:visible 选择器选取当前可见的每个元素。
this.setIndex(this.$list.filter(".m-list-item-active"));//active向活动的链接添加特殊的样式。
this.setActive(this.index);
},
hide: function(){
$wrapper.hide();
},
next: function(){
return this.setActive(this.index + 1);
},
prev: function(){
return this.setActive(this.index - 1);
},
$list: $wrapper.find(".m-list-item"),
index: 0,
$cur: [],
setActive: function(i){
// 找到第1个 li,并且赋值为 active
var $list = this.$list, size = $list.size();
if(size <= 0){
this.$cur = [];
return;
}
$list.filter(".m-list-item-active").removeClass("m-list-item-active");
if(i < 0){
i = 0;
}else if(i >= size){
i = size - 1;
}
this.index = i;
this.$cur = $list.eq(i).addClass("m-list-item-active");
this.fixScroll(this.$cur);
return this.$cur;
},
fixScroll: function($elem){
// console.log($wrapper);
var height = $wrapper.height(), top = $elem.position().top, eHeight = $elem.outerHeight();
var scroll = $wrapper.scrollTop();
// 因为 li 的 实际 top,应该要加上 滚上 的距离
top += scroll;
if(scroll > top){
$wrapper.scrollTop(top);
}else if(top + eHeight > scroll + height){
// $wrapper.scrollTop(top + height - eHeight);
$wrapper.scrollTop(top + eHeight - height);
}
},
setIndex: function($li){
if($li.size() > 0){
this.index = this.$list.index($li);
$li.addClass("m-list-item-active").siblings().removeClass("m-list-item-active");
}else{
this.index = 0;
}
}
};
// input 的操作
var operation = {
// 文字更变了,更新 li, 最低效率的一种
textChange: function(){
val = $.trim($input.val());
$wrapper.find(".m-list-item").each(function(i, v){
if(v.innerHTML.indexOf(val) >= 0){
$(v).show();
}else{
$(v).hide();
}
});
wrapper.show();
},
// 设值
setValue: function($li){
if($li && $li.size() > 0){
var val = $.trim($li.html());
$input.val(val).attr("placeholder", val);
$input.attr("title", val);
wrapper.setIndex($li);
$sel.val($li.attr("data-value")).trigger("change");
}else{
$input.val(function(i, v){
return $input.attr("placeholder");
});
};
wrapper.hide();
this.offBody();
},
onBody: function(){
var self = this;
setTimeout(function(){
self.offBody();
$body.on("click", self.bodyClick);
}, 10);
},
offBody: function(){
$body.off("click", this.bodyClick);
},
bodyClick: function(e){
var target = e.target;
if(target != $input[0] && target != $wrapper[0]){
wrapper.hide();
operation.setValue();
operation.offBody();
}
}
};
// 遍历 $sel 对象
function resetOption(){
var html = "", val = "", defVal = "";
$sel.find("option").each(function(i, v){
if(i == 0){
defVal = v.text;
}
if(v.selected){
val = v.text;
};
html += '<li class="m-list-item'+ (v.selected ? " m-list-item-active" : "") +'" data-value="'+ v.value +'" title="'+ v.text +'">'+ v.text +'</li>';
});
if(val.length == 0 ){
val = defVal;
}
$input.val(val);
$input.attr("title", val);
$input.attr("placeholder", val);
$wrapper.html(html);
};
$sel.on("optionChange", resetOption).trigger("optionChange");
$sel.on("setEditSelectValue", function(e, val){
// console.log(val);
var $all = $wrapper.find(".m-list-item"), $item;
for(var i = 0, max = $all.size(); i < max; i++){
$item = $all.eq(i);
if($item.attr("data-value") == val){
operation.setValue($item);
return;
}
}
});
// input 聚焦
$input.on("focus", function(){
this.value = "";
operation.textChange();
operation.onBody();
}).on("input propertychange", function(e){
operation.textChange();
}).on("keydown", function(e){
// 上 38, 下 40, enter 13
switch(e.keyCode){
case 38:
wrapper.prev();
break;
case 40:
wrapper.next();
break;
case 13:
operation.setValue(wrapper.$cur);
break;
}
});
$div.on("click", ".m-input-ico", function(){
// 触发 focus 和 blur 事件
// focus 是因为 input 有绑定
// 而 blur,实际只是失去焦点而已,真正隐藏 wrapper 的是 $body 事件
$wrapper.is(":visible") ? $input.blur() : ($input.val("").trigger("focus"));
});
// 选中
$wrapper.on("click", ".m-list-item", function(){
operation.setValue($(this));
return false;
});
setTimeout(function(){
// for ie
wrapper.hide();
}, 1)
//将wrapper对象绑定到当前select上
$(v).data("wrapper", wrapper);
});
return this;
};
})();
/**
* 更新当前FilterSelect的Option
*/
$.fn.filterSelectReloadOption = (function(){
return function(keepInputValue){
keepInputValue = keepInputValue || false;
this.each(function(i, v){
var $div = $(v).parent();
if($div.is("div") && $div.attr("class") == "m-input-select"){
var $sel = $(v);// 得到Select的DOM
var $input = $div.find(":text[class='m-input']");
var $wrapper = $div.find("ul[class='m-list']");
$wrapper.empty();
var html = "", val = "", defVal = "";
$sel.find("option").each(function(i, v){
if(i == 0){
defVal = v.text;
}
if(v.selected){
val = v.text;
};
html += '<li class="m-list-item'+ (v.selected ? " m-list-item-active" : "") +'" data-value="'+ v.value +'" title="'+ v.text +'">'+ v.text +'</li>';
});
if(val.length == 0 ){
val = defVal;
}
if (!keepInputValue) {
$input.val(val);
$input.attr("title", val);
$input.attr("placeholder", val);
}
$wrapper.html(html);
//获取绑定到当前select上的wrapper对象
var wrapper = $sel.data("wrapper");
//更新wrapper对象
wrapper.$list = $wrapper.find(".m-list-item");
wrapper.index = 0;
wrapper.$cur = [];
}
});
return this;
};
})();相关推荐
js实现select组件的选择输入过滤代码
如何实现select组件的选择输入过滤作用,下面有一段js代码,很实用,需要的朋友可以看看
js 解决 select option 过多 ,筛选过滤功能
js 解决 select option 过多 ,筛选过滤功能
js实现可输入可选择的select下拉框
本文实例为大家分享了可输入可选择的select下拉框,供大家参考,具体内容如下 1、原理: 1.1将input输入框和select框合并在一起,但是显示出向下点击的按钮: 这种比较容易做到 1.2出现输入值能够自动匹配的功能 动态的加载一个临时的div出现在该input下方,当点击页面中的空白地方,div隐藏。 1.3代码: <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="Generator" content="EditPlus:registered:"> <meta name="Author" con
js实现带筛选的select
根据网上现有的做了一些更改,参考源: https://www.cnblogs.com/wangzhaobo/p/8984135.html <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gbk" /> <title>1213</title> <script src="C:\U...
Ego-Planner实战避坑指南:从环境搭建到仿真运行
本文详细介绍了在Windows系统下,通过WSL2搭建Ego-Planner无人机路径规划算法开发环境的完整流程与实战避坑指南。内容涵盖ROS Noetic安装、第三方依赖库(如Ceres Solver)编译冲突解决、Realsense SDK版本降级处理,以及Gazebo仿真与真机调试的常见问题,旨在帮助开发者高效完成环境配置并成功运行仿真。
避坑指南:DeepSeek Function calling流式输出中的常见问题与解决方案
本文深入探讨了在DeepSeek Function Calling中实现流式输出时常见的参数拼接、函数依赖管理和错误处理等核心挑战。针对流式响应中参数碎片化的问题,提供了健壮的参数拼接方案与状态管理策略。同时,文章详细阐述了如何管理函数调用顺序、处理条件性执行,并构建了分阶段的错误处理与重试机制,旨在帮助开发者构建稳定、高效的流式AI应用。
JS下拉筛选功能
元素)都有一个类别,可以是"fruit"或"vegetable"。当页面加载时,所有的项目默认都是隐藏的。然后,我们为下拉列表添加了一个。在这个示例中,我们将展示如何使用JavaScript和HTML创建一个下拉列表,根据用户选择的不同选项来筛选并显示相关的数据。当用户从下拉列表中选择一个选项时,这个事件处理器会执行,根据用户选择的选项来显示或隐藏相关的项目。在这个例子中,我们有一个下拉列表(元素)和一个项目列表(
通信原理期末考试试题及答案
五、(总分12分)设某信道具有均匀的的双边噪声功率谱密度在该信道中传输抑制载波的单边带(上边带)信号,并设调制信号m(t)的频带限制在5K HZ,而载波为100 K HZ,已调信号的功率为10KW。:(1)单边带信号的载频为100kHz,带宽B=5kHz,为使信号顺利通过,理想带通滤波器的中心频率为。8、对最高频率为fH的调制信号m(t)分别进行AM、DSB、SSB调制,相应已调信号的带宽分别为。7、设调制信号为f(t)载波为,则抑制载波双边带调幅信号的时域表达式为,频域表达式为。
js select-option标签切换
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-...
基于FPGA设计的信号分析仪(项目资料ID:28)
基于现场可编程门阵列(FPGA)设计的信号分析仪。该信号分析仪旨在实现对各类信号的精确分析,具备频率、幅度、相位等参数测量功能。通过采用 FPGA 作为核心处理单元,充分利用其并行处理能力和可重构特性,提高了系统的处理速度和灵活性。论文介绍了信号分析仪的总体设计方案,包括硬件电路设计和软件算法实现。
基于STM32L4XX、HAL库的 ATGM336H GPS定位模块驱动程序设计
/ 转换为km/h。// 定位状态: 0=无效, 1=GPS定位, 2=差分定位。// GPS解析数据。支持GPS/BeiDou/GLONASS/Galileo/QZSS多系统联合定位。// 回调函数(需要在HAL_UART_RxCpltCallback中调用)// 地面速度(km/h)// 海拔高度(m)
html中option新页面打开,在Select中给Option内容加链接实现点击实现跳转的方法
这篇文章主要为大家详细介绍了在Select中给Option内容加链接实现点击实现跳转的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,有需要的朋友可以收藏方便以后借鉴。我们经常会在网站页面中使用到Select标签,我们知道在网页的在Html中,select元素可创建单选或多选菜单。其中 元素中的 标签用于定义列表中的可用选项。今天织梦361就主要给大家介绍在Select中给Option内...
软件测试高频面试题 2026 最新整理(功能 + 自动化)
本文系统整理了2026年软件测试面试高频题目及参考答案,涵盖功能测试、自动化测试及新兴热点领域。功能测试部分包含测试基础概念、用例设计方法、缺陷管理流程等10个必背题;自动化测试部分详细解析工具选择、元素定位、框架搭建等10个热门考点;新增章节聚焦AI测试、安全测试、性能指标等5个前沿话题。参考答案均采用结构化表述,包含定义、区别、适用场景等关键要素,并强调结合项目经验作答。文末提供2026版面试技巧,建议采用"结论-分点-总结"的回答逻辑,重点展现问题解决能力和技术前瞻性。
一个text自动筛选select中option的实例
需求描述:一个文本框和一个下拉选框,分别显示所选客户的ID及Name。要求1.在文本框中可输入数字、英文字符、汉字,以用筛选下拉选框中的信息。2.输入的筛选信息可匹配ID及Name。3.开头匹配即可。 if data(0,0) if Request("ddlCustID") = "" then Response.Write "" Else respons
基于STM32的太阳能充电宝设计_资料编号31
系统硬件包括主控 STM32F103C8T6、0.96 OLED 显示屏、蜂鸣器、电源自锁开关、温度传感器 DS18B20、继电器、5 V DC 升压模块 、TB4056、18650锂电池、9 V太阳能板、稳压降压 5 V三极管。电源供应:锂电池为系统供电,9 伏太阳能板经 5 伏降压稳压三极管降压为 5 伏后传送到 TP4056,TP4056 为锂电池供电,因锂电池电压 3.7 伏,通过 5 伏 DC 升压模块升压到 5 伏为整个系统提供 5 伏电压。
在实车上进行lio-sam测试
PS:将雷达和imu相对固定后,拆下来,原地晃啊晃,直到xyz进度达到百分百,参考gif。标定完成后,会在result文件夹下生成result.txt。
【web前端】可筛选[输入搜索]的select
基于jquery, 带筛选,可搜索的 select 插件。与 select 元素无缝结合,最大程度上,保证 select 的原生性。兼容 ie7 及 以上浏览器
大中型超市收银系统(可直接运行)
光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开
ant desgin vue2 使用 a-select a-tree-select 实现根据字母和汉字筛选
主要增加show-search 开启搜索功能,然后增加filter-option 传入筛选的方法,返回一个筛选后的数组。主要增加show-search 开启搜索功能,然后增加filter-option 传入筛选的方法,返回一个筛选后的数组。这个是筛选逻辑首先输入汉字匹配包含的,然后是输入字母就判断是拼音首字母的任意组合。我这个写的是公共方法,调用的时候使用import导入,然后再method中添加方法。首先我们需要引入一个js库,来实现汉字与字母的匹配。然后可以做出优化将公共部分移出来。
android 蓝牙通讯demo
android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。
精雕软件(JDpaint) 5.5 绿色版
精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版
jquery 遍历select option 结果集
"text/javascript" src="js/jquery-1.3.1.js"> "text/javascript" src="js/jquery.suggest.js"> "text/javascript"> jQuery(function() { jQuery('#deviceType').suggest('local_data');
ssm框架搭建
这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载
多选select,支持匹配输入内容,特殊处理输入不是下拉内容,在点击查看没有下拉内容的情况
【代码】多选select,并且支持匹配输入内容后,匹配不上下拉内容为空的特殊处理。
可输入的select
.cls1 { position:absolute; left:250px; top:89px; width:216px; height:72px; z-index:1; }.cls2 { position:absolute; left:250px; top:89px; width:95px; height:18px; z-index:2 }input { font-size: 12px; pad
vue3+antd select选择器实现下拉框筛选
我是在filterOption方法中通过当前输入的值所在的对象的value和全量下拉框的value做比较,筛选出来符合条件的进行展示。2、:filter-option="filterOption"是展示搜索后的的结果。a-select标签上加入show-search属性,即支持搜索项;提示:请根据searchTitleList.value的结构进行比较。
el-select 输入下拉搜索,匹配不到数据时也保留输入值,同时input获取焦点时保留其value值(el-select支持手动输入搜索)
需要注意的地方 1.为了在匹配不到数据时也保留其输入的值,可以用 filter-method 自定义筛选 2. el-select添加上filterable之后,点击展开,点击收起,会导致focus和blur事件不触发,但点击页面其他地方才可正常触发 ,可利用visible-change 事件来解决些问题 3.input获取焦点时保留其value值用focus事件做相关赋值处理 具体实现代码如下 <template> <el-select id="selectInput..
Select.js高级功能探索:键盘导航、搜索过滤与动态数据加载终极指南
Select.js是一个基于Tether构建的可样式化选择元素库,它旨在尽可能复制原生选择控件的行为,同时允许通过CSS进行完全样式定制。这个强大的JavaScript库为开发者提供了丰富的功能,包括键盘导航、实时搜索过滤和动态数据加载等高级特性,让Web表单交互体验达到专业级水准。 ## 🔍 为什么选择Select.js? Select.js与其他选择器替换方案不同,它从设计之初就致力于提
iview Select 组件 过滤功能 多项条件过滤
<Select v-model="formValidate.val" filterable clearable multiple placeholder="请输入" > <Option v-for="item in uData" :key="item.e...
multi.js:让多选下拉框焕发新生的终极解决方案
multi.js 是一款专为提升多选下拉框用户体验设计的轻量级 JavaScript 库,它能将原生枯燥的多选框转变为直观易用的双栏选择界面。无论是在表单设计还是数据筛选场景中,multi.js 都能帮助开发者轻松实现优雅的多选交互效果。 ## 📌 为什么选择 multi.js? 原生 HTML 的多选下拉框(`<select multiple>`)存在诸多体验痛点:需要按住 Ctrl 键才
5584



被折叠的 条评论
为什么被折叠?



