利用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 1.7.2中getAll方法的疑惑分析
May 23 Javascript
浅谈js中变量初始化
Feb 03 Javascript
javascript结合canvas实现图片旋转效果
May 03 Javascript
基于Bootstrap里面的Button dropdown打造自定义select
May 30 Javascript
javascript基本语法
May 31 Javascript
微信公众号 客服接口的开发实例详解
Sep 28 Javascript
快速实现JS图片懒加载(可视区域加载)示例代码
Jan 04 Javascript
vue.js项目 el-input 组件 监听回车键实现搜索功能示例
Aug 25 Javascript
基于Vue实现可以拖拽的树形表格实例详解
Oct 18 Javascript
详解Vue 动态组件与全局事件绑定总结
Nov 11 Javascript
详解微信小程序开发(项目从零开始)
Jun 06 Javascript
JavaScript 实现HTML DOM增删改查操作的常见方法详解
Jan 04 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
PHP3 safe_mode 失效漏洞
2006/10/09 PHP
php简单的留言板与回复功能具体实现
2014/02/19 PHP
php精确的统计在线人数的方法
2015/10/21 PHP
tp5(thinkPHP5)框架实现多数据库查询的方法
2019/01/10 PHP
php使用gearman进行任务分发操作实例详解
2020/02/26 PHP
JS 文件本身编码转换 图文教程
2009/10/12 Javascript
javascript编码的几个方法详细介绍
2013/01/06 Javascript
javascript 循环调用示例介绍
2013/11/20 Javascript
javascript实现可全选、反选及删除表格的方法
2015/05/15 Javascript
JavaScript实现跑马灯抽奖活动实例代码解析与优化(二)
2016/02/16 Javascript
基于JavaScript实现表单密码的隐藏和显示出来
2016/03/02 Javascript
如何用JavaScript实现动态修改CSS样式表
2016/05/20 Javascript
jQuery滚动新闻实现代码
2016/06/26 Javascript
全面了解JS中的匿名函数
2016/06/29 Javascript
JS判断form内所有表单是否为空的简单实例
2016/09/09 Javascript
前端图片懒加载(lazyload)的实现方法(提高用户体验)
2017/08/21 Javascript
nodejs实现范围请求的实现代码
2018/10/12 NodeJs
vue-cli 3.x配置跨域代理的实现方法
2019/04/12 Javascript
在vue中使用防抖函数组件操作
2020/07/26 Javascript
javascript实现多边形碰撞检测
2020/10/24 Javascript
用Python的urllib库提交WEB表单
2009/02/24 Python
举例讲解Django中数据模型访问外键值的方法
2015/07/21 Python
使用Python实现windows下的抓包与解析
2018/01/15 Python
anaconda如何查看并管理python环境
2019/07/05 Python
Djang的model创建的字段和参数详解
2019/07/27 Python
修改 CentOS 6.x 上默认Python的方法
2019/09/06 Python
Django模板语言 Tags使用详解
2019/09/09 Python
python库matplotlib绘制坐标图
2019/10/18 Python
Python selenium 加载并保存QQ群成员,去除其群主、管理员信息的示例代码
2020/05/28 Python
python如何建立全零数组
2020/07/19 Python
Selenium获取登录Cookies并添加Cookies自动登录的方法
2020/12/04 Python
pycharm远程连接服务器并配置python interpreter的方法
2020/12/23 Python
用HTML5实现网站在windows8中贴靠的方法
2013/04/21 HTML / CSS
劳动模范事迹材料
2014/01/19 职场文书
关于旅游的活动方案
2014/08/15 职场文书
动作冒险《Hell Is Us》将采用虚幻5 消灭怪物探索王国
2022/04/13 其他游戏