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 相关文章推荐
关于Javascript与iframe的那些事儿
Jul 04 Javascript
JQuery实现table行折叠效果以JSON做数据源
May 26 Javascript
javascript限制用户只能输汉字中文的方法
Nov 20 Javascript
Angular1.x自定义指令实例详解
Mar 01 Javascript
Vue实现路由跳转和嵌套
Jun 20 Javascript
web前端开发中常见的多列布局解决方案整理(一定要看)
Oct 15 Javascript
详解使用webpack构建多页面应用
Dec 21 Javascript
浅谈webpack 四个核心概念之Entry
Jun 12 Javascript
Vue+ElementUI 中级联选择器Bug问题的解决
Jul 31 Javascript
解决vue addRoutes不生效问题
Aug 04 Javascript
详解Vue的异步更新实现原理
Dec 22 Vue.js
JavaScript流程控制(循环)
Dec 06 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 八种基本的数据类型小结
2011/06/01 PHP
php语言流程控制中的主动与被动
2012/11/05 PHP
PHP使用mysql_fetch_object从查询结果中获取对象集的方法
2015/03/18 PHP
深入解析Laravel5.5中的包自动发现Package Auto Discovery
2017/09/13 PHP
讲两件事:1.this指针的用法小探. 2.ie的attachEvent和firefox的addEventListener在事件处理上的区别
2007/04/12 Javascript
js语法学习之判断一个对象是否为数组
2014/05/13 Javascript
javascript实现淡蓝色的鼠标拖动选择框实例
2015/05/09 Javascript
详解jQuery移动页面开发中的ui-grid网格布局使用
2015/12/03 Javascript
浅析Nodejs npm常用命令
2016/06/14 NodeJs
js利用clipboardData实现截屏粘贴功能
2016/10/12 Javascript
利用vue实现模态框组件
2016/12/19 Javascript
angularjs中的$eval方法详解
2017/04/24 Javascript
jQuery封装animate.css的实例
2018/01/04 jQuery
微信小程序 JS动态修改样式的实现方法
2018/12/16 Javascript
JavaScript实现单图片上传并预览功能
2019/09/30 Javascript
JS document内容及样式操作完整示例
2020/01/14 Javascript
js实现图片实时时钟
2020/01/15 Javascript
js实现小时钟效果
2020/03/25 Javascript
详细分析Node.js 模块系统
2020/06/28 Javascript
手把手带你搭建一个node cli的方法示例
2020/08/07 Javascript
python requests指定出口ip的例子
2019/07/25 Python
Django配置文件代码说明
2019/12/04 Python
Python 模拟动态产生字母验证码图片功能
2019/12/24 Python
Python爬虫教程之利用正则表达式匹配网页内容
2020/12/08 Python
HTML5 canvas基本绘图之绘制阴影效果
2016/06/27 HTML / CSS
采用冷却技术的超自然舒适度:GhostBed床垫
2018/09/18 全球购物
extern在函数声明中是什么意思
2014/01/19 面试题
公司晚会主持词
2014/03/22 职场文书
信用社竞聘演讲稿
2014/05/16 职场文书
小学教师培训方案
2014/06/09 职场文书
安全目标责任书
2014/07/22 职场文书
贫困证明模板(3篇)
2014/09/16 职场文书
2015年税务稽查工作总结
2015/05/26 职场文书
小学生红领巾广播稿
2015/08/19 职场文书
利用python实时刷新基金估值(摸鱼小工具)
2021/09/15 Python
http通过StreamingHttpResponse完成连续的数据传输长链接方式
2022/02/12 Python