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 判断字符串是否为数字的简单方法
Jul 25 Javascript
hover的用法及live的用法介绍(鼠标悬停效果)
Mar 29 Javascript
Query中click(),bind(),live(),delegate()的区别
Nov 19 Javascript
了不起的node.js读书笔记之node.js中的特性
Dec 22 Javascript
每天一篇javascript学习小结(基础知识)
Nov 10 Javascript
JS实现对中文字符串进行utf-8的Base64编码的方法(使其与Java编码相同)
Jun 21 Javascript
Angular directive递归实现目录树结构代码实例
May 05 Javascript
vue.js element-ui validate中代码不执行问题解决方法
Dec 18 Javascript
Vue列表渲染的示例代码
Nov 01 Javascript
学习LayUI时自研的表单参数校验框架案例分析
Jul 29 Javascript
Vue+Bootstrap收藏(点赞)功能逻辑与具体实现
Oct 22 Javascript
vue watch监控对象的简单方法示例
Jan 07 Vue.js
原生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中用数组的方法设置cookies
2011/04/21 PHP
php array_intersect比array_diff快(附详细的使用说明)
2011/07/03 PHP
PHP查找数值数组中不重复最大和最小的10个数的方法
2015/04/20 PHP
使用JavaScript创建新样式表和新样式规则
2016/06/14 PHP
windows7配置Nginx+php+mysql的详细教程
2016/09/04 PHP
使用laravel的Eloquent模型如何获取数据库的指定列
2019/10/17 PHP
js TextArea的选中区域处理
2010/12/28 Javascript
JS网页播放声音实现代码兼容各种浏览器
2013/09/22 Javascript
Javascript 按位取反运算符 (~)
2014/02/04 Javascript
Nodejs全栈框架StrongLoop推荐
2014/11/09 NodeJs
ES6中非常实用的新特性介绍
2016/03/10 Javascript
VC调用javascript的几种方法(推荐)
2016/08/09 Javascript
Javascript 函数的四种调用模式
2016/11/05 Javascript
bootstrap jquery dataTable 异步ajax刷新表格数据的实现方法
2017/02/10 Javascript
微信小程序之网络请求简单封装实例详解
2017/06/28 Javascript
Vue.js移动端左滑删除组件的实现代码
2017/09/08 Javascript
解决Vue编译时写在style中的路径问题
2017/09/21 Javascript
判断滚动条滑到底部触发事件(实例讲解)
2017/11/15 Javascript
Vue单页应用引用单独的样式文件的两种方式
2018/03/30 Javascript
ES6 对象的新功能与解构赋值介绍
2019/02/05 Javascript
iview tabs 顶部导航栏和模块切换栏的示例代码
2019/03/04 Javascript
JS实现判断移动端PC端功能
2020/02/21 Javascript
Taro小程序自定义顶部导航栏功能的实现
2020/12/17 Javascript
python脚本实现查找webshell的方法
2014/07/31 Python
Python实现屏幕截图的代码及函数详解
2016/10/01 Python
深入理解Python中range和xrange的区别
2017/11/26 Python
Python实现合并两个有序链表的方法示例
2019/01/31 Python
利用python脚本如何简化jar操作命令
2019/02/24 Python
python3 小数位的四舍五入(用两种方法解决round 遇5不进)
2019/04/11 Python
PyQT实现菜单中的复制,全选和清空的功能的方法
2019/06/17 Python
Python 可变类型和不可变类型及引用过程解析
2019/09/27 Python
谈一谈数组拼接tf.concat()和np.concatenate()的区别
2020/02/07 Python
详解CSS3 rem(设置字体大小) 教程
2017/11/21 HTML / CSS
几道Web/Ajax的面试题
2016/11/05 面试题
工程造价与管理专业应届生求职信
2013/11/23 职场文书
专科应届生求职信
2013/11/24 职场文书