微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

js 自动补全


js 代码
//---------------------------------------------------自动补全begin--------------------------------
var maxcount = 0;// 表示他最大的值
var thisCount =0;// 初始化他框的位置
var flagThis = 0;
var flag = 0; //标示是不是选择自动补全
//自动补全方法
function zdbq(obj){
var id = obj.id;
document.getElementById(zdbqid).value = id;
  jQuery(#+id).keyup(function(even) { 
  document.getElementById(autoTxt).style.width= 214+px;
      var v = even.which;
      //回车键:13;上键38;下键40// 当点击上下键或肯定键时禁止他传送数据    
      if (v == 38 || v == 40 || v == 13){  
         return;
      }   
      var txt = jQuery(#+id).val();//这里是获得他的输入框的值
      if (txt != ) {
      jQuery.ajax({
              url : xxx_xxx.action,//从后台获得json数据
              type : post,
              dataType : json,
              data : {name : txt
              },
              success : function(ls) {
              flagThis = 1;
                  var offset = jQuery(#+id).offset();//offset() 方法返回或设置匹配元素相对文档的偏移(位置)。
                  jQuery(#autoTxt).show();
                  jQuery(#autoTxt).css(top,(offset.top + 22) + px);
                  jQuery(#autoTxt).css(left,offset.left + px);           
                  var Candidate = ;
                   maxcount = 0;//再重新得值
                   var list=eval(ls);                   
                   jQuery.each(list,function(k,v) { 
                   var nn=(v+).split(,);
                     Candidate += <li style=温@良@顺list-style:none温@良@顺 id=温@良@顺+maxcount+温@良@顺>+nn[0]+</li><span id=温@良@顺hhh温@良@顺 style=display:none >+nn[1]+</span>;
                      maxcount++;                       
                  });                   
                  jQuery(#autoTxt).html(Candidate);
                  jQuery(#autoTxt li:eq(0)).css(background,#A8A5A5);//初始化许选择第1个数据
                  
                  //当单击某个LI时反应
                  jQuery(#autoTxt li).click(function(){  
                  flag = 1; //标示是不是选择自动补全
                  var jgname=jQuery(#autoTxt li:eq(+this.id+)).text(); //获得名称  
                  var fid = jQuery(#autoTxt span:eq(+thisCount+)).text(); //获得id
                  jQuery(#+id).val(jgname); //放入名称 
                  $(#jcid).val(fid); //放入id
                  jQuery(#autoTxt).html();
                  jQuery(#autoTxt).hide();                
                      });
                      //移动对象
                  jQuery(#autoTxt li).hover(function(){
                  jQuery(#autoTxt li).css(background,#FFFFFF);
                  jQuery(#autoTxt li:eq(+this.id+)).css(background,#A8A5A5);
                          thisCount=this.id;},function(){
                          jQuery(#autoTxt li).css(background,#FFFFFF);});
              },
              error : function() {
              jQuery(#autoTxt).html();
              jQuery(#autoTxt).hide();
                  maxcount = 0;
              }
          });
      } else {
      jQuery(#autoTxt).html();
      jQuery(#autoTxt).hide();
          maxcount = 0;
      }
  }    
  );
  //=====================自动补全公共部份开始=================================
  //当单击BODY时则隐藏搜索
  jQuery(body).click(function(){
  jQuery(#autoTxt).html();
  jQuery(#autoTxt).hide();
      thisCount=0;
  });
}


//键盘选择
jQuery(function(){


  //键盘按键移动事件上键38,下键40,肯定键13
  jQuery(body).keyup(
  function(even){
  var id = document.getElementById(zdbqid).value;
  var v = even.which;
  if(38==v){//上键
  if(thisCount>0){
  --thisCount;  
  }else{
  thisCount = maxcount⑴;
  }
              jQuery(#autoTxt li).css(background,#FFFFFF);
              jQuery(#autoTxt li:eq(+thisCount+)).css(background,#A8A5A5);
  }else if(40==v){//下键
  if(thisCount<maxcount⑴){
                  ++thisCount;
  }else{
  thisCount = 0;
  }
              jQuery(#autoTxt li).css(background,#A8A5A5);
  }else if(13==v){//肯定键
  flag = 1; //标示是不是选择自动补全
          var jgname=jQuery(#+thisCount).text(); //获得名称  
          var fid = jQuery(#autoTxt span:eq(+thisCount+)).text(); //获得id
          if(jgname!=){
          jQuery(#+id).val(jgname); //放入名称
              }
              if(fid!=){
              $(#jcid).val(fid); //放入id
              }
          jQuery(#autoTxt).html();
          jQuery(#autoTxt).hide();   
  }else {
  if(jQuery(#autoTxt).html()!=){
                  thisCount=0;
              }
  }
  }
  );
});

//---------------------------------------------------自动补全end--------------------------------

body里面需要写的代码

<!-- 自动补全用到的 -->
<!-- 寄存名称的id -->
<input type=hidden value= name=zdbqid id=zdbqid/>
<!-- 显示的div -->
<div style=width:180px; z-index:99999999; display:none; background:#FFFFFF; position: absolute; id=autoTxt></div>

在input中使用

onkeyup=zdbq(this); 


只要在后台封装成json对象就好了 详细代码就不展现了,只说1下封装json代码

JSONArray arr=new JSONArray();

Object[] obj = new Object[]{名称,id}; //名称和id传递到前台
arr.add(obj);


版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐