利用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 相关文章推荐
Jquery 组合form元素为json格式,asp.net反序列化
Jul 09 Javascript
jquery滚动组件(vticker.js)实现页面动态数据的滚动效果
Jul 03 Javascript
自动设置iframe大小的jQuery代码
Sep 11 Javascript
jQuery表格插件datatables用法总结
Sep 05 Javascript
JavaScript通过select动态更换图片的方法
Mar 23 Javascript
JS+DIV+CSS实现仿表单下拉列表效果
Aug 18 Javascript
浅谈Vue响应式(数组变异方法)
May 07 Javascript
微信小程序非swiper组件实现的自定义伪3D轮播图效果示例
Dec 11 Javascript
微信小程序云开发实现云数据库读写权限
May 17 Javascript
vue 组件中使用 transition 和 transition-group实现过渡动画
Jul 09 Javascript
详解Vue.js和layui日期控件冲突问题解决办法
Jul 25 Javascript
JS中锚点链接点击平滑滚动并自由调整到顶部位置
Feb 06 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
新闻分类录入、显示系统
2006/10/09 PHP
php报表之jpgraph柱状图实例代码
2011/08/22 PHP
PHP代码审核的详细介绍
2013/06/13 PHP
PHP入门经历和学习过程分享
2014/04/11 PHP
php实现兼容2038年后Unix时间戳转换函数
2015/03/18 PHP
php基于协程实现异步的方法分析
2019/07/17 PHP
解决FireFox下[使用event很麻烦]的问题
2006/11/26 Javascript
javascript在myeclipse中报错的解决方法
2013/10/29 Javascript
Js nodeType 属性全面解析
2013/11/14 Javascript
Javascript闭包用法实例分析
2015/01/23 Javascript
封装了jQuery的Ajax请求全局配置
2015/02/05 Javascript
JavaScript实现随机替换图片的方法
2015/04/16 Javascript
jquery衣服颜色选取插件效果代码分享
2015/08/28 Javascript
JavaScript中iframe实现局部刷新的几种方法汇总
2016/01/06 Javascript
AngularJS中如何使用$http对MongoLab数据表进行增删改查
2016/01/23 Javascript
ES6的新特性概览
2016/03/10 Javascript
JS+CSS实现闪烁字体效果代码
2016/04/05 Javascript
Vue.js每天必学之指令系统与自定义指令
2016/09/07 Javascript
《javascript少儿编程》location术语总结
2018/05/27 Javascript
vue src动态加载请求获取图片的方法
2018/10/17 Javascript
详解ng-alain动态表单SF表单项设置必填和正则校验
2019/06/11 Javascript
谈一谈vue请求数据放在created好还是mounted里好
2020/07/27 Javascript
Python yield使用方法示例
2013/12/04 Python
详解python配置虚拟环境
2019/04/08 Python
Python使用pandas和xlsxwriter读写xlsx文件的方法示例
2019/04/09 Python
python系列 文件操作的代码
2019/10/06 Python
Html5应用程序缓存(Cache manifest)
2018/06/04 HTML / CSS
瑞士灯具购物网站:Lampenwelt.ch
2018/07/08 全球购物
美国狗旅行和户外用品领先供应商:kurgo
2020/08/18 全球购物
社团活动总结报告
2014/06/27 职场文书
蛋糕店创业计划书范文
2014/09/21 职场文书
资金申请报告范文
2015/05/14 职场文书
会计工作自我鉴定范文
2019/06/21 职场文书
2019大学生实习报告
2019/06/21 职场文书
详解Java线程池是如何重复利用空闲线程的
2021/06/26 Java/Android
Pytest中skip和skipif的具体使用方法
2021/06/30 Python