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

  先看效果

利用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)"/>