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