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 相关文章推荐
关于js datetime的那点事
Nov 15 Javascript
JS中的prototype与面向对象的实例讲解
May 22 Javascript
jquery 延迟执行实例介绍
Aug 20 Javascript
Javascript正则控制文本框只能输入整数或浮点数
Sep 02 Javascript
基于javascript、ajax、memcache和PHP实现的简易在线聊天室
Feb 03 Javascript
原生js和jQuery写的网页选项卡特效对比
Apr 27 Javascript
基于jquery实现导航菜单高亮显示(两种方法)
Aug 23 Javascript
js判断当前页面用什么浏览器打开的方法
Jan 06 Javascript
AngularJS基础 ng-click 指令示例代码
Aug 01 Javascript
在vscode中统一vue编码风格的方法
Feb 22 Javascript
JS实现获取数组中最大值或最小值功能示例
Mar 02 Javascript
vue 百度地图(vue-baidu-map)绘制方向箭头折线实例代码详解
Apr 28 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
Yii2中设置与获取别名的函数(setAlias和getAlias)用法分析
2016/07/25 PHP
PHP实现的Redis多库选择功能单例类
2017/07/27 PHP
Laravel 5使用Laravel Excel实现Excel/CSV文件导入导出的功能详解
2017/10/11 PHP
浅析PHP7 的垃圾回收机制
2019/09/06 PHP
jQuery 研究心得 取得属性的值
2007/11/30 Javascript
StringTemplate遇见jQuery冲突的解决方法
2011/09/22 Javascript
浅谈JavaScript实现面向对象中的类
2014/12/09 Javascript
jQuery实现图片与文字描述左右滑动自动切换的方法
2015/07/27 Javascript
AngularJs 60分钟入门基础教程
2016/04/03 Javascript
用JS中split方法实现彩色文字背景效果实例
2016/08/24 Javascript
js学习之----深入理解闭包
2016/11/21 Javascript
微信小程序实时聊天WebSocket
2018/07/05 Javascript
vue最简单的前后端交互示例详解
2018/10/11 Javascript
手把手教你使用TypeScript开发Node.js应用
2019/05/06 Javascript
bootstrap datepicker的基本使用教程
2019/07/09 Javascript
vue+echarts+datav大屏数据展示及实现中国地图省市县下钻功能
2020/11/16 Javascript
[02:43]中国五虎出征TI3视频
2013/08/02 DOTA
python中的编码知识整理汇总
2016/01/26 Python
matplotlib绘图实例演示标记路径
2018/01/23 Python
Opencv+Python 色彩通道拆分及合并的示例
2018/12/08 Python
python调用HEG工具批量处理MODIS数据的方法及注意事项
2020/02/18 Python
在python中logger setlevel没有生效的解决
2020/02/21 Python
Python爬虫实现模拟点击动态页面
2020/03/05 Python
多重CSS背景动画实现方法示例
2014/04/04 HTML / CSS
纯html5+css3下拉导航菜单实现代码
2013/03/18 HTML / CSS
单身旅行者的单身假期:Just You
2018/04/08 全球购物
财务会计毕业生自荐信
2013/11/02 职场文书
机械电子工程毕业生自荐信
2013/11/23 职场文书
个人生活学习自我评价范文
2013/11/26 职场文书
公司捐款倡议书
2014/05/14 职场文书
解除财产保全担保书
2014/05/20 职场文书
安全生产一岗双责责任书
2014/07/28 职场文书
《钓鱼的启示》教学反思
2016/02/18 职场文书
python process模块的使用简介
2021/05/14 Python
JavaScript利用html5新方法操作元素类名详解
2021/11/27 Javascript
React如何使用axios请求数据并把数据渲染到组件
2022/08/05 Javascript