JS Select下拉框(支持输入模糊查询)


Posted in Javascript onFebruary 04, 2017

本文实例为大家分享了支持输入模糊查询的Select下拉框,供大家参考,具体内容如下

<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
<title>Insert title here</title> 
 <Script Language="Javascript"> 
 
 function SelectValue(obj) 
 { 
 document.all.box2.value = obj.options[obj.selectedIndex].text; 
 } 
 var j = 0; 
 function InputValue(obj) 
 { 
 var n = 1; 
 var tmpObj; 
 var src = document.all.SelectOption; 
 var msg = document.all.msg; 
 if(event.keyCode != 40 && event.keyCode != 38 && event.keyCode != 13){ 
 if(obj.value!=""){ 
  msg.style.display=""; 
  msg.innerHTML=""; 
  if(msg.hasChildNodes()) 
  { 
  msg.childNodes[0].parentNode.removeChild(msg.childNodes[0]); 
  } 
  
  for (var i=0;i<src.length;i++){ 
  var selValue = document.createElement("div"); 
  var selText = document.createElement("div"); 
  selText.value = src(i).value; 
  selText.innerHTML = src(i).text; 
 
  if (src(i).text.toLowerCase().indexOf(obj.value.toLowerCase())==0){ 
  selText.setAttribute("id","selText"+n); 
  selText.onmouseover=function (){ 
  this.style.backgroundColor='#003399'; 
  this.style.color ='#ffffff'; 
  } 
  selText.onmouseout=function (){ 
  this.style.backgroundColor='#ffffff'; 
  this.style.color ='#000000'; 
  } 
  selText.onclick=function (){ 
  document.all.box2.value = this.innerHTML; 
  msg.style.display="none"; 
  document.getElementById("txtSection").value=this.value; 
  } 
  msg.appendChild(selText); 
  n++; 
  } 
  } 
 } 
 else { 
 document.all.msg.style.display="none"; 
 } 
 } 
 else { 
 //press down key 
 if(event.keyCode==40){ 
 j++; 
 for (var i=0; i<src.length; i++) 
 { 
  tmpObj = document.getElementById("selText"+i); 
  if(tmpObj != null){ 
  tmpObj.style.backgroundColor='#ffffff'; 
  tmpObj.style.color ='#000000'; 
  }  
 } 
 tmpObj = document.getElementById("selText"+j); 
 if(tmpObj != null){ 
  tmpObj.style.backgroundColor='#003399'; 
  tmpObj.style.color ='#ffffff'; 
 }else{ 
  j = 0; 
 } 
 } 
 //press up key 
 if (event.keyCode==38){ 
 j--; 
 for (var i=0; i<src.length; i++) 
 { 
  tmpObj = document.getElementById("selText"+i); 
  if(tmpObj != null){ 
  tmpObj.style.backgroundColor='#ffffff'; 
  tmpObj.style.color ='#000000'; 
  }  
 } 
 tmpObj = document.getElementById("selText"+j); 
 if(tmpObj != null){ 
  tmpObj.style.backgroundColor='#003399'; 
  tmpObj.style.color ='#ffffff'; 
 }else{ 
  j = 2; 
 } 
 } 
 //press enter key 
 if (event.keyCode==13){ 
 tmpObj = document.getElementById("selText"+j); 
 document.all.box2.value = tmpObj.innerHTML; 
 msg.style.display="none"; 
 document.getElementById("txtSection").value=tmpObj.value; 
 } 
 } 
 } 
 
 function SelMatch(src) 
 { 
 var currSel = document.all.box2.value; 
 for (var i=0;i<src.length;i++){ 
 if (src(i).text==currSel) 
 { 
 src.options(i).selected = true; 
 } 
 } 
 } 
 
 function NoMsg() 
 { 
 if(document.activeElement.id=="msg") 
 return false; 
 else 
 document.all.msg.style.display='none'; 
 } 
 
 
 </Script> 
</head> 
<body> 
 
 <TABLE border=0 cellPadding=1 cellSpacing=0 width="100%"> 
 <TR> 
 <TD width="24%"><font face="Arial" size="2">查询</font></TD> 
 <TD COLSPAN=3 width="76%"> 
 
 <div style="position:relative;"> 
 <span style="margin-left:230px;width:18px;overflow:hidden;"> 
  <select style="HEIGHT: 22px; WIDTH: 250px; margin-left:-232px;" onchange="SelectValue(this)" onclick="SelMatch(this)" id="SelectOption" name="SelectOption" > 
  <OPTION >ALL</OPTION> 
  <OPTION >管理者1</OPTION> 
  <OPTION >管理者2</OPTION> 
  <OPTION >管理者3</OPTION> 
  <OPTION >业务员3</OPTION> 
  <OPTION >业务员3</OPTION> 
  <OPTION >13</OPTION> 
  <OPTION >103</OPTION> 
  </select> 
  </span> 
  <input name="box2" id="box2" style="width:230px;position:absolute;left:0px;" onkeyup="InputValue(this)" onblur="NoMsg()" onfocus="this.select();InputValue(this)" value="" > 
  <div id="msg" style="border:1px solid green; font-size :14PX;white-space:nowrap;overflow:hidden; 
  width:230px;position:absolute;left:0px;top:20px;display:none"> 
 </div> 
 </div> 
 <Input Type="Hidden" Name="txtSection" id="txtSection"> 
  
 </TD> 
 </TR> 
 </TABLE> 
 
</body> 
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Javascript 构造函数 实例分析
Nov 26 Javascript
6个DIV 135或246间隔一秒轮番显示效果
Jul 24 Javascript
jquery 文本上下无缝滚动,鼠标放上去就停止 小例子
Jun 05 Javascript
jquery中map函数与each函数的区别实例介绍
Jun 23 Javascript
原生js实现日期联动
Jan 12 Javascript
微信公众号 客服接口的开发实例详解
Sep 28 Javascript
基于vue2.x的电商图片放大镜插件的使用
Jan 22 Javascript
vue 基于element-ui 分页组件封装的实例代码
Dec 10 Javascript
解决layer弹出层msg的文字不显示的问题
Sep 11 Javascript
解决layui的table插件无法多层级获取json数据的问题
Sep 19 Javascript
javascript实现点击星星小游戏
Dec 24 Javascript
分享一款超好用的JavaScript 打包压缩工具
Apr 26 Javascript
原生js实现打字动画游戏
Feb 04 #Javascript
js实现自定义路由
Feb 04 #Javascript
jQuery窗口拖动功能的实现代码
Feb 04 #Javascript
简单易懂的天气插件(代码分享)
Feb 04 #Javascript
URL中“#” “?” &amp;“”号的作用浅析
Feb 04 #Javascript
Angularjs 依赖压缩及自定义过滤器写法
Feb 04 #Javascript
javascript实现复选框全选或反选
Feb 04 #Javascript
You might like
php如何连接sql server
2015/10/16 PHP
javascript 火狐(firefox)不显示本地图片问题解决
2008/07/05 Javascript
javascript实现的距离现在多长时间后的一个格式化的日期
2009/10/29 Javascript
超级24小时弹窗代码 24小时退出弹窗代码 100%弹窗代码(IE only)
2010/06/11 Javascript
利用腾讯的ip地址库做ip物理地址定位
2010/07/24 Javascript
深入理解JavaScript系列(6) 强大的原型和原型链
2012/01/15 Javascript
给artDialog 5.02 增加ajax get功能详细介绍
2012/11/13 Javascript
使用JavaScript链式编程实现模拟Jquery函数
2014/12/21 Javascript
JS百度地图搜索悬浮窗功能
2017/01/12 Javascript
jQuery实现简易的输入框字数计数功能示例
2017/01/16 Javascript
jQuery实现ajax无刷新分页页码控件
2017/02/28 Javascript
JavaScript屏蔽Backspace键的实现代码
2017/11/02 Javascript
JS控制下拉列表左右选择实例代码
2020/05/08 Javascript
vue动态加载SVG文件并修改节点数据的操作代码
2020/08/17 Javascript
JavaScript实现消消乐的源代码
2021/01/12 Javascript
[46:12]完美世界DOTA2联赛循环赛 DM vs Matador BO2第一场 11.04
2020/11/04 DOTA
解决windows下Sublime Text 2 运行 PyQt 不显示的方法分享
2014/06/18 Python
详细介绍Python函数中的默认参数
2015/03/30 Python
python使用BeautifulSoup分页网页中超链接的方法
2015/04/04 Python
Python实现将数据库一键导出为Excel表格的实例
2016/12/30 Python
Python基础之getpass模块详细介绍
2017/08/10 Python
Python实现的微信好友数据分析功能示例
2018/06/21 Python
Python 十六进制整数与ASCii编码字符串相互转换方法
2018/07/09 Python
使用python的pandas库读取csv文件保存至mysql数据库
2018/08/20 Python
详解Python用三种方式统计词频的方法
2019/07/29 Python
Django项目之Elasticsearch搜索引擎的实例
2019/08/21 Python
python模块和包的应用BASE_PATH使用解析
2019/12/14 Python
移动端html5模拟长按事件的实现方法
2018/09/30 HTML / CSS
英国女性运动服品牌:Sweaty Betty
2018/11/08 全球购物
语文复习计划
2015/01/19 职场文书
机动车交通事故协议书
2015/01/29 职场文书
2015年公司工作总结
2015/04/25 职场文书
村党总支部公开承诺书2016
2016/03/25 职场文书
Vue.js 带下拉选项的输入框(Textbox with Dropdown)组件
2021/04/17 Vue.js
vue项目支付功能代码详解
2022/02/18 Vue.js
教你使用Ubuntu搭建DNS服务器
2022/09/23 Servers