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简单几行代码实现tab切换
Mar 10 Javascript
js实现仿微博滚动显示信息的效果
Dec 21 Javascript
javascript数据类型验证方法
Dec 31 Javascript
同步文本框内容JS代码实现
Aug 04 Javascript
浅谈jQuery效果函数
Sep 16 Javascript
ES6中module模块化开发实例浅析
Apr 06 Javascript
微信小程序开发之实现自定义Toast弹框
Jun 08 Javascript
浅谈 Vue v-model指令的实现原理
Jun 08 Javascript
详解vue项目首页加载速度优化
Oct 18 Javascript
bootstrap日期插件daterangepicker使用详解
Oct 19 Javascript
基于layui的下拉列表的数据回显方法
Sep 24 Javascript
vue中的可拖拽宽度div的实现示例
Apr 08 Vue.js
基于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抓取https的内容的代码
2010/04/06 PHP
javascript数组与php数组的地址传递及值传递用法实例
2015/01/22 PHP
PHP常用处理静态操作类
2015/04/03 PHP
WordPress用户登录框密码的隐藏与部分显示技巧
2015/12/31 PHP
基于PHP实现商品成交时发送短信功能
2016/05/11 PHP
Yii视图操作之自定义分页实现方法
2016/07/14 PHP
PHP实现数组array转换成xml的方法
2016/07/19 PHP
动态获取复选框checkbox选中个数的jquery代码
2013/06/25 Javascript
JS实现图片翻书效果示例代码
2013/09/09 Javascript
jquery的clone方法应用于textarea和select的bug修复
2014/06/26 Javascript
你所不了解的javascript操作DOM的细节知识点(一)
2015/06/17 Javascript
老生常谈 关于JavaScript的类的继承
2016/06/24 Javascript
JavaScript正则表达式小结(test|match|search|replace|split|exec)
2016/12/08 Javascript
Bootstrap源码解读标签、徽章、缩略图和警示框(8)
2016/12/26 Javascript
微信小程序-拍照或选择图片并上传文件
2017/01/06 Javascript
vue中使用localstorage来存储页面信息
2017/11/04 Javascript
利用JavaScript的%做隔行换色的实例
2017/11/25 Javascript
js实现微信/QQ直接跳转到支付宝APP打开口令领红包功能
2018/01/09 Javascript
Vue项目中设置背景图片方法
2018/02/21 Javascript
详解使用webpack+electron+reactJs开发windows桌面应用
2019/02/01 Javascript
[02:41]DOTA2英雄基础教程 亚巴顿
2014/01/02 DOTA
Python图片裁剪实例代码(如头像裁剪)
2017/06/21 Python
Python实现两款计算器功能示例
2017/12/19 Python
python 通过logging写入日志到文件和控制台的实例
2018/04/28 Python
Spotahome意大利:公寓和房间出租
2020/02/21 全球购物
荷兰睡眠专家:Beter Bed
2020/11/23 全球购物
外企测试工程师面试题
2015/02/01 面试题
回门宴新郎答谢词
2014/01/12 职场文书
高一化学教学反思
2014/02/05 职场文书
财务简历的自我评价
2014/03/05 职场文书
乡镇信息公开实施方案
2014/03/23 职场文书
公共机构节能宣传周活动总结
2014/07/09 职场文书
科学发展观活动总结
2014/08/28 职场文书
父亲婚礼答谢词
2015/01/04 职场文书
2016学校元旦晚会经典开场白台词
2015/12/03 职场文书
使用python绘制横竖条形图
2022/04/21 Python