js实现带搜索功能的下拉框实时搜索实时匹配


Posted in Javascript onNovember 05, 2013

1. 当select输入框中每输入一点内容的时候,在option中找出与内容匹配的选项显示在option的前面选项中。
2. 如何获取每次输入的内容,当keyup的时候触发函数。
问题:select标签中可以输入内容吗?(解决:另一篇文章可选择和输入的下拉列表框 )
3. 如何获得输入框中的内容?(解决,在输入框上添加onkeyup时间触发的函数用js获得)
4. 如何匹配?(解决)
4.1 如何获得所有option中的内容?(解决)

function getSelectText() 
{ 
//获得所有select标签 
var object = document.getElementsByTagName('select'); 
//因为该html中只有一个select标签,所以就是name = "aabb"代表的标签 
var obj = object[0]; 
//alert(obj.length); 
//alert(obj[0]); 
//保存所有option 的值 
var allText; 
for(i=0;i<obj.length;i++) 
{ 
allText += obj[i].innerText+','; //关键是通过option对象的innerText属性获取到选项文本 
} 
return allText; 
}

4.2 js分割字符串?(解决)
var allText = getSelectText(); 
//alert(allText); 
// 每个option的内容分割开来 
var eachOptin = new Array(); 
eachOptin=allText.split(","); //字符分割

4.3 如何在js中匹配?
//如果option内容中有输入的内容就返回第一次匹配的位置(大于等于0),如果没有匹配的就返回-1 
var flag = eachOptin[i].indexOf(shuru) ;

5. 如何让匹配的内容显示在option的前面的选项?(通过改变option的index编号)( 解决)
方法:当查到匹配的选项的时候,将第一个option重新新增到select最后,然后,将第一个的值重置为匹配的option的值,然后删掉原始匹配的option
7. js 实现select标签右边三角的功能(未解决,当搜索之后,直接显示所有option选项可供选择)
8.在匹配的option选项有多个的时候出现bedug,注意测试,和重新修改一下,应该是上面第五条中的逻辑问题
代码如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>测试</title> 
<script> 
function onku() 
{ 
//获得input输入框的内容 
var shuru = document.getElementById('ccdd').value; 
var object = document.getElementsByTagName('select'); 
var obj = object[0]; 
//如果输入的内容为空,所有的选项都匹配 
if(shuru!= '') 
{ 
//alert(shuru); 
//获得option中的所有内容 
var allText = getSelectText(); 
//alert(allText); 
// 每个option的内容分割开来 
var eachOptin = new Array(); 
eachOptin=allText.split(","); //字符分割 
var f = 1; 
for (i=1;i<eachOptin.length-1 ;i++ ) 
{ 
//alert(eachOptin[i]); 
//如果option内容中有输入的内容就返回第一次匹配的位置(大于等于0),如果没有匹配的就返回-1 
var flag = eachOptin[i].indexOf(shuru) ; 
if(flag >=0) 
{ 
//alert(i); 
//将index为f的option重新新增一遍,显示在最后 
obj.options.add(new Option(obj[i].innerText,obj[f].value)); 
//将编号为f的option重新赋值,赋值为符合条件的第一个option 
obj.options[f]=new Option(eachOptin[i],eachOptin[i]); 
//删除最初存在的符合条件的option 
obj.remove(i); 
f++; 
} 
} 
} 
} 
function getSelectText() 
{ 
//获得所有select标签 
var object = document.getElementsByTagName('select'); 
//因为该html中只有一个select标签,所以就是name = "aabb"代表的标签 
var obj = object[0]; 
//alert(obj.length); 
//alert(obj[0]); 
//保存所有option 的值 
var allText; 
for(i=0;i<obj.length;i++) 
{ 
//alert(obj[i].index);//获得option的index编号 
//alert(obj[i].value);//获得option的value的值 
allText+= obj[i].innerText+','; //关键是通过option对象的innerText属性获取到选项文本 
} 
return allText; 
} 
</script> 
</head> <body> 
<span style=" position:absolute;border:1pt solid #c1c1c1; overflow:hidden;width:188px;height:19px;clip:rect(-1px 190px 190px 170px);"> 
<select name="aabb" id="aabb" style="width:190px;height:20px;margin:-2px;" 
onChange="javascript:document.getElementById('ccdd').value=document.getElementById('aabb').options[document.getElementById('aabb').selectedIndex].value;"> 
<option value="" style="color:#c2c2c2;">--请选择--</option> 
<option value="北京">北京</option> 
<option value="上海">上海</option> 
<option value="广州">广州</option> 
<option value="上123">上123</option> 
<option value="苏州">苏州</option> 
</select> 
</span> 
<span style="position:absolute; border:1pt solid #c1c1c1;border-left:1pt solid #c1c1c1;border-bottom:1pt solid #c1c1c1;width:170px;height:19px;"> 
<input type="text" name="ccdd" id="ccdd" value="可选择也可输入的下拉框" style="width:170px;height:15px;border:0pt;" onkeyup="onku()"> 
</span> 
</body> 
</html>

注意代码中的注释
上面代码的运行结果如下:
js实现带搜索功能的下拉框实时搜索实时匹配
Javascript 相关文章推荐
选择复选框按钮置灰否则按钮可用
May 22 Javascript
jquery JSON的解析方式示例介绍
Jul 27 Javascript
浅谈页面装载js及性能分析方法
Dec 09 Javascript
jQuery实现延迟跳转的方法
Jun 05 Javascript
node.js抓取并分析网页内容有无特殊内容的js文件
Nov 17 Javascript
JavaScript弹窗基础篇
Apr 27 Javascript
jQuery Validate插件实现表单验证
Aug 19 Javascript
js中Number数字数值运算后值不对的解决方法
Feb 28 Javascript
最全正则表达式总结:验证QQ号、手机号、Email、中文、邮编、身份证、IP地址等
Aug 16 Javascript
javascript 中模板方法单例的实现方法
Oct 17 Javascript
js实现一个简单的MVVM框架示例
Jan 15 Javascript
javascript function(函数类型)使用与注意事项小结
Jun 10 Javascript
查看大图功能代码jquery版
Nov 05 #Javascript
使用jquery自定义鼠标样式满足个性需求
Nov 05 #Javascript
iframe子页面获取父页面元素的方法
Nov 05 #Javascript
jquery统计复选框选中示例
Nov 05 #Javascript
jquery实现滑动图片自己测试的例子
Nov 05 #Javascript
用js实现in_array的方法
Nov 05 #Javascript
jquery遍历数组与筛选数组的方法
Nov 05 #Javascript
You might like
PHP读取目录下所有文件的代码
2008/01/07 PHP
php+Mysqli利用事务处理转账问题实例
2015/02/11 PHP
php lcg_value与mt_rand生成0~1随机小数的效果对比分析
2017/04/05 PHP
Laravel定时任务的每秒执行代码
2019/10/22 PHP
收藏一些不常用,但是有用的代码
2007/03/12 Javascript
javascript禁制后退键(Backspace)实例代码
2013/11/15 Javascript
jquery修改属性值实例代码(设置属性值)
2014/01/06 Javascript
jquery validate 自定义验证方法介绍 日期验证
2014/02/27 Javascript
教你如何在 Javascript 文件里使用 .Net MVC Razor 语法
2014/07/23 Javascript
探讨跨域请求资源的几种方式(总结)
2016/12/02 Javascript
javascript深拷贝和浅拷贝详解
2017/02/14 Javascript
canvas绘制环形进度条
2017/02/23 Javascript
微信小程序开发之实现自定义Toast弹框
2017/06/08 Javascript
详解Vue微信公众号开发踩坑全记录
2017/08/21 Javascript
微信小程序之自定义组件的实现代码(附源码)
2018/08/02 Javascript
微信小程序框架的页面布局代码
2019/08/17 Javascript
node express使用HTML模板的方法示例
2019/08/22 Javascript
javascript单张多张图无缝滚动实例代码
2020/05/10 Javascript
koa2 数据api中间件设计模型的实现方法
2020/07/13 Javascript
超详细小程序定位地图模块全系列开发教学
2020/11/24 Javascript
Python查找两个有序列表中位数的方法【基于归并算法】
2018/04/20 Python
Python实现抓取HTML网页并以PDF文件形式保存的方法
2018/05/08 Python
使用python来调用CAN通讯的DLL实现方法
2019/07/03 Python
pycharm 添加解释器的方法步骤
2020/08/31 Python
YOOX美国官方网站:全球著名的多品牌时尚网络概念店
2016/09/11 全球购物
常用UNIX 命令(Linux的常用命令)
2013/07/10 面试题
《都江堰》教学反思
2014/02/07 职场文书
《曹刿论战》教学反思
2014/03/02 职场文书
庆七一活动总结
2014/08/27 职场文书
群众路线自查自纠工作情况报告
2014/10/28 职场文书
堂吉诃德读书笔记
2015/06/30 职场文书
小学班级标语口号大全
2015/12/26 职场文书
干货!开幕词的写作方法
2019/04/02 职场文书
OpenCV 图像梯度的实现方法
2021/07/25 Python
Windows Server 2019 配置远程控制以及管理方法
2022/04/28 Servers
数据设计之权限的实现
2022/08/05 MySQL