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 相关文章推荐
用jquery实现学校的校历(asp.net+jquery ui 1.72)
Jan 01 Javascript
学习面向对象之面向对象的术语
Nov 30 Javascript
使用jQuery+HttpHandler+xml模拟一个三级联动的例子
Aug 09 Javascript
基于JQuery实现鼠标点击文本框显示隐藏提示文本
Feb 23 Javascript
JavaScript中解析JSON数据的三种方法
Jul 03 Javascript
JavaScript获取function所有参数名的方法
Oct 30 Javascript
JavaScript算法系列之快速排序(Quicksort)算法实例详解
Sep 04 Javascript
Vue.js组件使用开发实例教程
Nov 01 Javascript
VueJs路由跳转——vue-router的使用详解
Jan 10 Javascript
微信小程序wx.uploadfile 本地文件转base64的实现代码
Jun 28 Javascript
详解ES6数组方法find()、findIndex()的总结
May 12 Javascript
javascript实现拼图游戏
Jan 29 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
php+js iframe实现上传头像界面无跳转
2014/04/29 PHP
Laravel学习教程之View模块详解
2017/09/18 PHP
用js实现键盘方向键翻页功能的代码
2007/06/03 Javascript
javascript 面向对象编程 function也是类
2009/09/17 Javascript
AngularJS控制器controller给模型数据赋初始值的方法
2017/01/04 Javascript
jq stop()和:is(:animated)的用法及区别(详解)
2017/02/12 Javascript
JS验证input输入框(字母,数字,符号,中文)
2017/03/23 Javascript
ExtJs整合Echarts的示例代码
2018/02/27 Javascript
vue项目base64字符串转图片的实现代码
2018/07/13 Javascript
webpack是如何实现模块化加载的方法
2019/11/06 Javascript
javascript设计模式 ? 模板方法模式原理与用法实例分析
2020/04/23 Javascript
如何构建一个Vue插件并生成npm包
2020/10/26 Javascript
Python多线程编程(七):使用Condition实现复杂同步
2015/04/05 Python
Python+树莓派+YOLO打造一款人工智能照相机
2018/01/02 Python
python XlsxWriter模块创建aexcel表格的实例讲解
2018/05/03 Python
python 魔法函数实例及解析
2019/09/25 Python
Python装饰器结合递归原理解析
2020/07/02 Python
Django xadmin安装及使用详解
2020/10/26 Python
Python中正则表达式对单个字符,多个字符和匹配边界等使用
2021/01/27 Python
python模块内置属性概念及实例
2021/02/18 Python
HTML5 source标签:媒介元素定义媒介资源
2018/01/29 HTML / CSS
Snapfish英国:在线照片打印和个性化照片礼品
2017/01/13 全球购物
大学生毕业自我鉴定范文
2013/09/19 职场文书
设计毕业生简历中的自我评价
2013/10/01 职场文书
夜大毕业生自我评价分享
2013/11/10 职场文书
环保倡议书300字
2014/05/15 职场文书
技术股份合作协议书
2014/10/05 职场文书
销售员态度差检讨书
2014/10/26 职场文书
刑事辩护词范文
2015/05/21 职场文书
党小组意见范文
2015/06/08 职场文书
三八红旗手主要事迹材料
2015/11/04 职场文书
nginx实现发布静态资源的方法
2021/03/31 Servers
redis限流的实际应用
2021/04/24 Redis
mysql 8.0.24版本安装配置方法图文教程
2021/05/12 MySQL
vue项目支付功能代码详解
2022/02/18 Vue.js
vue+iview实现手机号分段输入框
2022/03/25 Vue.js