编写自动匹配的下拉框(已解决IE8兼容)
如何制作一个带匹配功能的下拉框?
之前看见layui有相关组件,但是发现,如果输入的内容在下拉框中没有相应的匹配,就会清空当前值,搞得我很不满意。有些代码是从网上扒下来的,但是找不到原地址了,凑合看吧,希望有人看到提醒我一下。以下是测试解决方案:
测试代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>可搜索的下拉框</title>
<link href="https://www.layuicdn.com/layui/css/layui.css"
	rel="stylesheet">
</head>
<body>
	<!--[if lt IE 9]>
		<script src="https://cdn.staticfile.org/html5shiv/r29/html5.min.js"></script>
		<script src="https://cdn.staticfile.org/respond.js/1.4.2/respond.min.js"></script>
	<![endif]-->
	<div class="layui-container">
		<div class="layui-row">
			<div class="layui-form" style="width: 100px;">
				<input type="text" id="Company" class="layui-input" style="position: absolute; z-index: 2; width: 70px;"
					lay-verify="required" value="111" onkeyup="search()"
					autocomplete="off">
				<div class="layui-input-inline">
					<select id="test" class="layui-select" lay-filter="test" lay-verify="required" autocomplete="off" lay-search>
						<option value="layui">layui</option>
						<option value="layer">layer</option>
						<option value="jquery">jquery</option>
					</select>
				</div>
			</div>
		</div>
	</div>
	< script type="text/javascript" src="http://libs.baidu.com/jquery/1.11.1/jquery.min.js"></script>
	< script type="text/javascript" src="./layui/layui.js"></script>
	< script type="text/javascript">
	document.onmouseup = function(e){
	var e = e || window.event;
	var target = e.target || e.srcElement;
	var _con = $('#test').next().find("div")
	if(!_con.is(target) && _con.has(target).length === 0){
		$("#test").next().find("dl").css({
				"display" : "none"
			});
	}else{
		$("#test").next().find("dl").css({
				"display" : "block"
			});
	}
	}
	layui.use(['form'], function() {
		$=layui.jquery;
		layui.form.on('select(test)', function(data) {
			$("#Company").val(data.value);
			$("#test").next().find("dl").css({
				"display" : "none"
			});
			layui.form.render();
		});
		window.search = function() {
			var value = $("#Company").val();
			$=layui.jquery;
			$("#test").val(value);
			layui.form.render();
			$("#test").next().find("dl").css({
				"display" : "block"
			});
			var dl = $("#test").next().find("dl").children();
			var j = -1;
			for (var i = 0; i < dl.length; i++) {
				if (dl[i].innerHTML.indexOf(value) <= -1) {
					dl[i].style.display = "none";
					j++;
				}
				if (j == dl.length - 1) {
					$("#test").next().find("dl").css({
						"display" : "none"
					});
				}
			}
		}
	});
	</script>
</body>
</html>
以上为全部代码
另外要注意的是,此处用到的layui与IE8不兼容,具体体现在当下拉框取值为空的时候,IE8会报错,因此需要修改layui的源码,一共需要修改三处:
一、
d=t(p[0].options[i]).html()
需要修改成
d=t(p[0].options[p[0].selectedIndex == -1 ? 0 : p[0].selectedIndex]).html()
二、
d=t(p[0].options[a]).html()
修改为
d=t(p[0].options[p[0].selectedIndex == -1 ? 0 : p[0].selectedIndex]).html()
三、
f=t(l.options[l.selectedIndex])
修改为
f=t(l.options[l.selectedIndex == -1 ? 0 : l.selectedIndex])
以上错误均为同一类错误,另外我用的是layui-v2.5.4(目前的最新版本)来测试的,至于jquery的引用自己看。以下我用四类浏览器进行测试,发现都可行,其中由于win10没有IE8,IE8的环境是在IE11的浏览器中设置了仿真。
IE8浏览器测试截图

IE11浏览器测试截图

火狐浏览器测试截图

谷歌浏览器测试截图

编写自动匹配的下拉框(已解决IE8兼容)的更多相关文章
- Qt编写自定义控件52-颜色下拉框
		
一.前言 这个控件写了很久了,元老级别的控件之一,开发之初主要是自己的好几个项目要用到,比如提供一个颜色下拉框设置对应的曲线或者时间颜色,视频监控项目中经常用到的OSD标签设置,这个控件的难度系数接近 ...
 - jquery 匹配select下拉框与列表框
		
今天工作中用到 GrapyCity 的 wijmo ui 控件. 要给系统中所有类型的控件加统一样式 用法 $("input [type='text']").wijtext(); ...
 - 简述Object(ActiveX)控件遮挡Dialog、select下拉框的解决办法
		
1.背景 最近在做项目的过程中,我们使用了Object控件,但是同时在上面写了一个select下拉框,因此每次点击下拉框的时候我们会发现,下拉框的部分内容被Object控件给遮挡了,调查研究后发现,我 ...
 - easyui的combobox,自动搜索的下拉框
		
作者:多来哈米 如图,输入关键字,左匹配检索 HTML代码 <input class="easyui-combobox" name="userId" id ...
 - ASP.NET MVC搭建项目后台UI框架—11、自动加载下拉框查询
		
ASP.NET MVC搭建项目后台UI框架—1.后台主框架 需求:在查询记录的时候,输入第一个字,就自动把以这个字开头的相关记录查找出来,输入2个字就过滤以这两个子开头的记录,依次类推. 突然要用到这 ...
 - easyui combo自动高度(下拉框空白问题)
		
设置.combo-panel {max-height:200px;} 在用到easyui-combobox时,设置panelHeight:'auto'
 - C#.NET MVC 枚举转dictionary自动装载生成下拉框
		
/// <summary> /// 枚举转SelectListItem /// </summary> public class Enum_Helper { /// < ...
 - ThinkPHP中ajax绑定select下拉框无法显示
		
html代码: 控制器代码: 其中的<option value="{$vo.gradeId}">{$one.gradeName}</option> 在操作过 ...
 - JavaScript解决select下拉框中的内容太长显示不全的问题
		
JavaScript解决select下拉框中的内容太长显示不全的问题 1.说明 有些情况下,select下拉框的内容过长,导致部分看不见: 现在通过鼠标事件,让下拉框中的内容显示完全 2.实现源码 & ...
 
随机推荐
- Console也要美颜了,来给Console添色彩
			
我们在开发过程中,经常需要将不同的信息用颜色标记出来,这可以让我们快速关注到重点信息.想必大家都知道,可以通过Console. ForegroundColor设置输出文字的颜色,背景颜色可以通过Con ...
 - 重学计算机网络(二) - 曾记否,查IP地址
			
先献上几个梗 1.1.1.1 不是测试用的,原来一直没分配,现在被用来做一个DNS了,宣传是比谷歌等公司的dns服务 更保护用户隐私. IP地址255.255.255.255,代表有限广播,它的目标是 ...
 - python编辑已存在的excel坑: BadZipFile: File is not a zip file
			
背景-原代码如下,期望能自动创建excel,并且可以反复调用编辑: import xlwt,osfrom openpyxl.styles import Font, colors class Write ...
 - keras的get_value运行越来越慢的问题解决
			
https://blog.csdn.net/mingshili/article/details/81941677?utm_source=blogxgwz5
 - 矩阵微分与向量函数Taylor展开
			
参考博客:https://blog.csdn.net/a_big_pig/article/details/78994033
 - springBoot配置elasticsearch搜索
			
1.本地安装elasticsearch服务,具体过程见上一篇文章(安装和配置elasticsearch服务集群) 2.修改项目中pom文件,引入搜索相关jar包 <!-- elasticsear ...
 - vi 多行注释与取消
			
多行注释 1.在命令行模式下,按 Shift + v 进入 VISUAL LINE 模式 2.选择要注释内容 3.按下 Ctrl + Shift + v 锁定块(XShell中) 或 按下 Ctrl ...
 - python 26 反射
			
目录 1. 类的反射 1.1 实例对象 1.2 类 1.3 其他模块 -- 其他.py文件 1.4 本模块 -- 当前.py文件 2. 函数与方法的区别 2.1区别的方法: 2.2 总结 3. 特殊的 ...
 - unity之游戏特效
			
一.运动轨迹 运动轨迹常常用于表现武器的挥舞效果,在提高速度感的同时又能让玩家看清楚招式动作,所以是常见的一种格斗特效. Unity中可以直接使用TrailRender来实现该效果. 二.运动模糊 运 ...
 - CodeForces 989D
			
题意略. 思路: 可以看成是所有的云彩照常运动,而月亮在跑.只要两个云彩相交后,在分离前月亮能赶到,就算是符合题意的. 可以知道,两个相隔越远的相向运动地云彩是越有可能符合题意的,因为它们相遇所用时间 ...