利用jQuery实现可输入搜索文字的下拉框


Posted in Javascript onOctober 23, 2013

先看效果
利用jQuery实现可输入搜索文字的下拉框 
利用jQuery实现可输入搜索文字的下拉框 
功能:点击下拉框输入框时,自动显示下面的下拉列表,而且是根据输入框中输入的搜索添加,自动在后台查找,然后传到前台,展现页面。
用的的js:

var $xialaSELECT; 
$(document).ready(function(){ 
initXialaSelect(); 
initSearch(); 
}); 
var temptimeout=null; 
var query=""; 
function searchDev(key){ 
//if(key == "")return; 
query=key; 
clearTimeout(temptimeout); 
temptimeout= setTimeout(findUnSaved, 500); 
} 
function findUnSaved() 
{ 
//alert("dd"); 
//if(1==1)return; 
$.ajax({ 
type: "post", 
data:{'query':query}, 
url: path + "/tList.action", 
success: function(data) { 
xiala(data); 
}, 
error: function(data) { 
alert("加载失败,请重试!"); 
} 
}); 
} 
function initSearch() 
{ 
//定义一个下拉按钮层,并配置样式(位置,定位点坐标,大小,背景图片,Z轴),追加到文本框后面 
$xialaDIV = $('<div></div>').css('position', 'absolute').css('left', $('#province').position().left + $('#province').width() - 15 + 'px').css('top', 
$('#province').position().top + 4 + 'px').css('background', 'transparent url(../images/lala.gif) no-repeat top left').css('height', '16px').css('width', 
'15px').css('z-index', '100'); 
$('#province').after($xialaDIV); 
//鼠标进入修改背景图位置 
$xialaDIV.mouseover(function(){ 
$xialaDIV.css('background-position', ' 0% -16px'); 
}); 
//鼠标移出修改背景图位置 
$xialaDIV.mouseout(function(){ 
$xialaDIV.css('background-position', ' 0% -0px'); 
}); 
//鼠标按下修改背景图位置 
$xialaDIV.mousedown(function(){ 
$xialaDIV.css('background-position', ' 0% -32px'); 
}); 
//鼠标释放修改背景图位置 
$xialaDIV.mouseup(function(){ 
$xialaDIV.css('background-position', ' 0% -16px'); 
if($xialaSELECT) 
$xialaSELECT.show(); 
}); 
$('#province').mouseup(function(){ 
$xialaDIV.css('background-position', ' 0% -16px'); 
$xialaSELECT.show(); 
}); 
} 
var firstTimeYes=1; 
//文本框的下拉框div 
function xiala(data){ 
//first time 
if($xialaSELECT) 
{ 
$xialaSELECT.empty(); 
} 
//定义一个下拉框层,并配置样式(位置,定位点坐标,宽度,Z轴),先将其隐藏 
//定义五个选项层,并配置样式(宽度,Z轴一定要比下拉框层高),添加name、value属性,加入下拉框层 
$xialaSELECT.append(data); 
if(firstTimeYes == 1) 
{ 
firstTimeYes =firstTimeYes+1; 
}else{ 
$xialaSELECT.show(); 
} 
} 
function initXialaSelect() 
{ 
$xialaSELECT = $('<div></div>').css('position', 'absolute').css('overflow-y','scroll').css('overflow-x','hidden').css('border', '1px solid #809DB9').css('border-top','none').css('left', '125px').css 
('top', $('#province').position().top + $('#province').height() + 6 + 'px').css('width', $('#province').width() + 'px').css('z-index', '101').css('width','152px').css('background','#fff').css('height','200px').css('max-height','600px'); 
$('#province').after($xialaSELECT); 
//选项层的鼠标移入移出样式 
$xialaSELECT.mouseover(function(event){ 
if ($(event.target).attr('name') == 'option') { 
//移入时背景色变深,字色变白 
$(event.target).css('background-color', '#000077').css('color', 'white'); 
$(event.target).mouseout(function(){ 
//移出是背景色变白,字色变黑 
$(event.target).css('background-color', '#FFFFFF').css('color', '#000000'); 
}); 
} 
}); 
//通过点击位置,判断弹出的显示 
$xialaSELECT.mouseup(function(event){ 
//如果是下拉按钮层或下拉框层,则依然显示下拉框层 
if (event.target == $xialaSELECT.get(0) || event.target == $xialaDIV.get(0)) { 
$xialaSELECT.show(); 
} 
else { 
//如果是选项层,则改变文本框的值 
if ($(event.target).attr('name') == 'option') { 
//弹出value观察 
$('#nce').val($(event.target).html()); 
$('#d').val($(event.target).attr("d")); 
//if seleced host then hidden the dev type 
if($(event.target).attr("ass") == 3305) 
{ 
$("#ype").hide(); 
$("#ost").val(1); 
}else{ 
$("#ype").show(); 
$("#ost").val(-1); 
} 
} 
//如果是其他位置,则将下拉框层 
if ($xialaSELECT.css('display') == 'block') { 
$xialaSELECT.hide(); 
} 
} 
}); 
$xialaSELECT.hide(); 
} 
var k = 1; 
document.onclick = clicks; 
function clicks() 
{ 
if(k ==2){ 
k = 1; 
if($xialaSELECT) 
{ 
if ($xialaSELECT.css('display') == 'block') { 
$xialaSELECT.hide(); 
} 
} 
}else{ 
k = 2; 
} 
}

.cba { 
width: 150px; 
height: 18px; 
} 
.selectlala { 
text-align: left; 
line-height: 20px; 
padding-left: 5px; 
width: 147px; 
font-family: Arial,verdana,tahoma; 
height: 20px; 
} 
<input type="text" name="province" id="province" class="cba" onkeyup="searchDev(this.value)"/>
Javascript 相关文章推荐
Knockoutjs快速入门(经典)
Dec 24 Javascript
『jQuery』.html(),.text()和.val()的概述及使用
Apr 22 Javascript
获取非最后一列td值并将title设为该值的方法
Oct 30 Javascript
JS实现左右拖动改变内容显示区域大小的方法
Oct 13 Javascript
javascript图片预加载完整实例
Dec 10 Javascript
JS中的hasOwnProperty()和isPrototypeOf()属性实例详解
Aug 11 Javascript
Bootstrap Navbar Component实现响应式导航
Oct 08 Javascript
vue.js开发环境搭建教程
May 04 Javascript
Vue路由之JWT身份认证的实现方法
Aug 26 Javascript
vue中动态select的使用方法示例
Oct 28 Javascript
Vue 实现创建全局组件,并且使用Vue.use() 载入方式
Aug 11 Javascript
前端使用crypto.js进行加密的函数代码
Aug 16 Javascript
jquery模拟SELECT下拉框取值效果
Oct 23 #Javascript
js、css、img等浏览器缓存问题的2种解决方案
Oct 23 #Javascript
js从10种颜色中随机取色实现每次取出不同的颜色
Oct 23 #Javascript
3分钟写出来的Jquery版checkbox全选反选功能
Oct 23 #Javascript
js(jQuery)获取时间的方法及常用时间类搜集
Oct 23 #Javascript
js简单实现HTML标签Select联动带跳转
Oct 23 #Javascript
JS Date函数整理方便使用
Oct 23 #Javascript
You might like
PHP5与MySQL数据库操作常用代码 收集
2010/03/21 PHP
php 获取xml接口数据的处理方法
2018/05/31 PHP
thinkphp5修改view到根目录实例方法
2019/07/02 PHP
深入理解JavaScript系列(33):设计模式之策略模式详解
2015/03/03 Javascript
js实现类似于add(1)(2)(3)调用方式的方法
2015/03/04 Javascript
深入探究使JavaScript动画流畅的一些方法
2015/06/30 Javascript
Treegrid的动态加载实例代码
2016/04/29 Javascript
jQuery插件Validation快速完成表单验证的方式
2016/07/28 Javascript
微信小程序 后台登录(非微信账号)实例详解
2017/03/31 Javascript
webpack处理 css\less\sass 样式的方法
2017/08/21 Javascript
Angularjs cookie 操作实例详解
2017/09/27 Javascript
JavaScript多态与封装实例分析
2018/07/27 Javascript
jQuery实现的简单手风琴效果示例
2018/08/29 jQuery
[01:32]寻找你心中的那团火 DOTA2 TI9火焰传递活动今日开启
2019/05/16 DOTA
python3.3实现乘法表示例
2014/02/07 Python
pip 错误unused-command-line-argument-hard-error-in-future解决办法
2014/06/01 Python
利用Python查看目录中的文件示例详解
2017/08/28 Python
利用numpy实现一、二维数组的拼接简单代码示例
2017/12/15 Python
Python 实现删除某路径下文件及文件夹的实例讲解
2018/04/24 Python
python获取微信企业号打卡数据并生成windows计划任务
2019/04/30 Python
python requests更换代理适用于IP频率限制的方法
2019/08/21 Python
Python标准库itertools的使用方法
2020/01/17 Python
FitFlop美国官网:英国符合人体工学的鞋类品牌
2018/10/05 全球购物
最新的大学生找工作自我评价
2013/09/29 职场文书
大学生就业自荐信
2013/10/26 职场文书
计算机专业毕业生推荐信
2013/11/25 职场文书
青年创业培训欢迎词
2014/01/10 职场文书
《争吵》教学反思
2014/02/15 职场文书
大型营销活动计划书
2014/04/28 职场文书
承诺书范本大全
2015/05/04 职场文书
2016元旦文艺汇演主持词
2015/07/06 职场文书
2016年大学迎新晚会工作总结
2015/10/15 职场文书
2016年暑假家长对孩子评语
2015/12/01 职场文书
如何起草一份正确的合伙创业协议书?
2019/07/04 职场文书
一行Python命令实现批量加水印
2022/04/07 Python
Python Matplotlib绘制等高线图与渐变色扇形图
2022/04/14 Python