javascript仿百度输入框提示自动下拉补全


Posted in Javascript onJanuary 07, 2016

本文实例讲解了javascript输入框自动下拉补全操作,仿百度、谷歌搜索框提示,具体内容如下

效果图:

javascript仿百度输入框提示自动下拉补全

javascript仿百度输入框提示自动下拉补全

具体代码:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
 <HEAD>
 <TITLE> New Document </TITLE>
 <META NAME="Generator" CONTENT="EditPlus">
 <META NAME="Author" CONTENT="">
 <META NAME="Keywords" CONTENT="">
 <META NAME="Description" CONTENT="">
 <script type="text/javascript" src="jquery.js"></script>
  <script type="text/javascript">
  /*自动下拉补全 zhk */
  var highlightindex=-1;//当前高亮的节点
 $(document).ready(function(){
 var wordInput=$("#word");
 var wordInputOffset=wordInput.offset();
 
  $("#auto").hide().css("border","1px black solid").css("position","absolute")
  .css("top",wordInputOffset.top+wordInput.height()+5+"px")
  .css("left",wordInputOffset.left+"px").width(wordInput.width()+2);
 
 wordInput.keyup(function (event){
 
  var myEvent=event||window.event;
  var keyCode=myEvent.keyCode;
  if(keyCode>=65&&keyCode<=90||keyCode==8||keyCode==46){
 
   var wordText=$("#word").val();
   var autoNode=$("#auto");
   if(wordText!=""){
   
    
    var wordNodes=$("span");
    
    autoNode.html("");
    wordNodes.each(function(i){
     var wordNode=$(this);
     var newDivNode=$("<div>").attr("id",i);
      
     newDivNode.html(wordNode.text()).appendTo(autoNode);
     newDivNode.mouseover(function(){//鼠标进入
      if(highlightindex!=-1){
        $("#auto").children("div").eq(highlightindex)
        .css("background-color","white");
       }
       highlightindex=$(this).attr("id");
       $(this).css("background-color","red");
      })
 
      newDivNode.mouseout(function(){//鼠标移除
       $(this).css("background-color","white");
      
       })
newDivNode.click(function(){//点击
       var comText=$(this).text();
       $("#auto").hide();
     highlightindex=-1;
     $("#word").val(comText);
       })
 
    })
    if(wordNodes.length>0){
     autoNode.show();
    }else{
     autoNode.hide();
     highlightindex=-1;
     }
   
   }else{
   autoNode.hide();
    highlightindex=-1;
    }
 
   }else if(keyCode==38||keyCode==40){
     if(keyCode==38){//向上
      var autoNodes=$("#auto").children("div");
       if(highlightindex!=-1){
        autoNodes.eq(highlightindex).css("background-color","white");
         highlightindex--;
       }else{
        highlightindex=autoNodes.length-1;
       }
       
       if(highlightindex==-1){
        highlightindex=autoNodes.length-1;
       }
       autoNodes.eq(highlightindex).css("background-color","red");
     }
     if(keyCode==40){
      var autoNodes=$("#auto").children("div");
       if(highlightindex!=-1){
        autoNodes.eq(highlightindex).css("background-color","white");
       }
       highlightindex++;
       if(highlightindex==autoNodes.length){
        highlightindex=0;
       }
       autoNodes.eq(highlightindex).css("background-color","red");
     }
   }else if(keyCode==13){
     
    if(highlightindex!=-1){
     var comText=$("#auto").hide().children("div").eq(highlightindex).text();
     highlightindex=-1;
     $("#word").val(comText);
     }else{
      alert("文本框中的【"+$("#word").val()+"】被提交了");
      $("#auto").hide();
       $("#word").get(0).blur();//失去焦点
     }
    }
  });
 
  $("input [type='button']").click(function(){
   alert("文本框中的【"+$("#word").val()+"】被提交了");
  });
 
 
})
</script>
 </HEAD>
 
 <BODY>
 <input type="text" id="word">
<input type="button" value="提交">
<div id="auto"></div>
<p>
<span>aaa</span>
<span>abc</span>
<span>abd</span>
<span>bbc</span>
<span>beb</span>
<span>cer</span>
<span>erd</span>
<span>beg</span>
<p>
 </BODY>
</HTML>

以上就是本文的全部内容,希望对大家学习javascript程序设计有所帮助。

Javascript 相关文章推荐
js下用gb2312编码解码实现方法
Dec 31 Javascript
jQuery实现的Email中的收件人效果(按del键删除)
Mar 20 Javascript
js获取当前时间显示在页面上并每秒刷新
Dec 24 Javascript
javascript时间排序算法实现活动秒杀倒计时效果
Jan 28 Javascript
jQuery控制控件文本的长度的操作方法
Dec 05 Javascript
js实现可输入可选择的select下拉框
Dec 21 Javascript
JavaScript实现类似淘宝的购物车效果
Mar 16 Javascript
JAVA中截取字符串substring用法详解
Apr 14 Javascript
jQuery简介_动力节点Java学院整理
Jul 04 jQuery
react-native 圆弧拖动进度条实现的示例代码
Apr 12 Javascript
JS实现进度条动态加载特效
Mar 25 Javascript
vue.js封装switch开关组件的操作
Oct 26 Javascript
基于jquery实现表格无刷新分页
Jan 07 #Javascript
js密码强度检测
Jan 07 #Javascript
实例详解JSON数据格式及json格式数据域字符串相互转换
Jan 07 #Javascript
基于JavaScript实现通用tab选项卡(通用性强)
Jan 07 #Javascript
基于JavaScript代码实现兼容各浏览器的设为首页和加入收藏
Jan 07 #Javascript
JavaScript设计模式初探
Jan 07 #Javascript
JavaScript类型系统之Object详解
Jan 07 #Javascript
You might like
谏山创故乡大分县日田市水坝将设立《进击的巨人》立艾伦、三笠以及阿尔敏的铜像!
2020/03/06 日漫
也谈php网站在线人数统计
2008/04/09 PHP
PHP错误Warning: Cannot modify header information - headers already sent by解决方法
2014/09/27 PHP
php计算年龄精准到年月日
2015/11/17 PHP
详解PHP对象的串行化与反串行化
2016/01/24 PHP
php获取当前月与上个月月初及月末时间戳的方法
2016/12/05 PHP
JavaScript 基础问答三
2008/12/03 Javascript
js控制不同的时间段显示不同的css样式的实例代码
2013/11/04 Javascript
js动态往表格的td中添加图片并注册事件
2014/06/12 Javascript
javascript背景时钟实现方法
2015/06/18 Javascript
详解AngularJS的通信机制
2015/06/18 Javascript
javascript实现自动填写表单实例简析
2015/12/02 Javascript
2016年最热门的15 款代码语法高亮工具,美化你的代码
2016/01/06 Javascript
jQuery使用ajax跨域获取数据的简单实例
2016/05/18 Javascript
任意Json转成无序列表的方法示例
2016/12/09 Javascript
基于bootstrap实现多个下拉框同时搜索功能
2017/07/19 Javascript
详解mpvue小程序中怎么引入iconfont字体图标
2018/10/01 Javascript
一步步教你利用Docker设置Node.js
2018/11/20 Javascript
微信小程序图表插件wx-charts用法实例详解
2019/05/20 Javascript
解决vue-cli项目开发运行时内存暴涨卡死电脑问题
2019/10/29 Javascript
jquery ajax 请求小技巧实例分析
2019/11/11 jQuery
vue使用svg文件补充-svg放大缩小操作(使用d3.js)
2020/09/22 Javascript
JavaScript 实现拖拽效果组件功能(兼容移动端)
2020/11/11 Javascript
[01:03:50]DOTA2-DPC中国联赛 正赛 CDEC vs DLG BO3 第二场 2月7日
2021/03/11 DOTA
Python中.py文件打包成exe可执行文件详解
2017/03/22 Python
Python网络编程使用select实现socket全双工异步通信功能示例
2018/04/09 Python
python读取文本中数据并转化为DataFrame的实例
2018/04/10 Python
python-opencv颜色提取分割方法
2018/12/08 Python
opencv-python 读取图像并转换颜色空间实例
2019/12/09 Python
公认8个效率最高的爬虫框架
2020/07/28 Python
Pytorch自定义Dataset和DataLoader去除不存在和空数据的操作
2021/03/03 Python
四川省传达学习贯彻党的群众路线教育实践活动总结大会精神新闻稿
2014/10/26 职场文书
您对思维方式了解多少?
2019/12/09 职场文书
zabbix agent2 监控oracle数据库的方法
2021/05/13 Oracle
java objectUtils 使用可能会出现的问题
2022/02/28 Java/Android
利用For循环遍历Python字典的三种方法实例
2022/03/25 Python