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自动完成插件(autocomplete)应用之PHP版
Dec 15 Javascript
Extjs Ext.MessageBox.confirm 确认对话框详解
Apr 02 Javascript
jquery的父子兄弟节点查找示例代码
Mar 03 Javascript
js实现网页倒计时、网站已运行时间功能的代码3例
Apr 14 Javascript
js判断鼠标位置是否在某个div中的方法
Feb 26 Javascript
Bootstrap基本插件学习笔记之模态对话框(16)
Dec 08 Javascript
Node.js使用orm2进行update操作时关联字段无法修改的解决方法
Jun 13 Javascript
seajs模块压缩问题与解决方法实例分析
Oct 10 Javascript
使用vue-router设置每个页面的title方法
Feb 11 Javascript
JS左右无缝轮播功能完整实例
May 16 Javascript
vue实现跨域的方法分析
May 21 Javascript
jQuery Raty星级评分插件使用方法实例分析
Nov 25 jQuery
基于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 smarty截取中文字符乱码问题?gb2312/utf-8
2011/11/07 PHP
PHP排序算法的复习和总结
2012/02/15 PHP
php实现按文件名搜索文件的远程文件查找器
2014/05/10 PHP
thinkPHP使用post方式查询时分页失效的解决方法
2015/12/09 PHP
详解PHP字符串替换str_replace()函数四种用法
2017/10/13 PHP
javascript 类方法定义还是有点区别
2009/04/15 Javascript
javascript各浏览器中option元素的表现差异
2011/04/07 Javascript
jQuery实现当前页面标签高亮显示的方法
2015/03/10 Javascript
javascript倒计时效果实现
2015/11/12 Javascript
jquery实现加载进度条提示效果
2015/11/23 Javascript
JQuery中Ajax的操作完整例子
2017/03/07 Javascript
JavaScript实现跟随滚动缓冲运动广告框
2017/07/15 Javascript
JS实现元素上下左右移动效果
2017/10/18 Javascript
浅谈js的解析顺序 作用域 严格模式
2017/10/23 Javascript
Vue.js devtool插件安装后无法使用的解决办法
2017/11/27 Javascript
JS中数据结构与算法---排序算法(Sort Algorithm)实例详解
2019/06/17 Javascript
[05:49]DOTA2-DPC中国联赛 正赛 Elephant vs LBZS 选手采访
2021/03/11 DOTA
Python中利用函数装饰器实现备忘功能
2015/03/30 Python
Python实现的用户登录系统功能示例
2018/02/05 Python
Python 创建新文件时避免覆盖已有的同名文件的解决方法
2018/11/16 Python
详解pyenv下使用python matplotlib模块的问题解决
2018/11/29 Python
Python re正则表达式元字符分组()用法分享
2020/02/10 Python
Jupyter Notebook打开任意文件夹操作
2020/04/14 Python
Python退出时强制运行一段代码的实现方法
2020/04/29 Python
python 6行代码制作月历生成器
2020/09/18 Python
html通过canvas转成base64的方法
2019/07/18 HTML / CSS
德国团购网站:Groupon德国
2018/03/13 全球购物
网上常见的一份Linux面试题(多项选择部分)
2014/09/09 面试题
公司成立感言
2014/01/11 职场文书
大一新生学期自我评价
2014/04/09 职场文书
组工干部演讲稿
2014/09/02 职场文书
2015年党员个人工作总结
2015/05/13 职场文书
辩论会主持词
2015/07/03 职场文书
springboot中一些比较常用的注解总结
2021/06/11 Java/Android
Python 多线程处理任务实例
2021/11/07 Python
Redis全局ID生成器的实现
2022/06/05 Redis