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与google map api结合使用 控件,监听器
Mar 04 Javascript
JavaScript异步调用定时方法并停止该方法实现代码
Mar 16 Javascript
一款jquery特效编写的大度宽屏焦点图切换特效的实例代码
Aug 05 Javascript
各浏览器对document.getElementById等方法的实现差异解析
Dec 05 Javascript
浅谈重写window对象的方法
Dec 29 Javascript
全面解析Bootstrap表单使用方法(表单样式)
Nov 24 Javascript
Angular.js实现动态加载组件详解
May 28 Javascript
JS实现获取汉字首字母拼音、全拼音及混拼音的方法
Nov 14 Javascript
js断点调试心得分享(必看篇)
Dec 08 Javascript
浅谈手写node可读流之流动模式
Jun 01 Javascript
vue axios封装及API统一管理的方法
Apr 18 Javascript
node.js使用fs读取文件出错的解决方案
Oct 23 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/04/09 国漫
php数据结构与算法(PHP描述) 查找与二分法查找
2012/06/21 PHP
smarty表格换行实例
2014/12/15 PHP
WordPress主题制作中自定义头部的相关PHP函数解析
2016/01/08 PHP
Smarty简单生成表单元素的方法示例
2016/05/23 PHP
PHP常用header头定义代码示例汇总
2020/08/29 PHP
JQuery 网站换肤功能实现代码
2009/11/02 Javascript
jQuery基础语法实例入门
2014/12/23 Javascript
JavaScript基础函数整理汇总
2015/01/30 Javascript
jQuery插件Validate实现自定义表单验证
2016/01/18 Javascript
jQuery实现页面滚动时智能浮动定位
2017/01/08 Javascript
Vue Ajax跨域请求实例详解
2017/06/20 Javascript
AngularJs 最新验证手机号码的实例,成功测试通过
2017/11/26 Javascript
详解webpack3编译兼容IE8的正确姿势
2017/12/21 Javascript
vue基于element-ui的三级CheckBox复选框功能的实现代码
2018/10/15 Javascript
ES6 Generator函数的应用实例分析
2019/06/26 Javascript
javascript实现随机抽奖功能
2020/12/30 Javascript
基于element-ui封装表单金额输入框的方法示例
2021/01/06 Javascript
win10下Python3.6安装、配置以及pip安装包教程
2017/10/01 Python
python opencv实现旋转矩形框裁减功能
2018/07/25 Python
Python标准库shutil用法实例详解
2018/08/13 Python
详解Django的CSRF认证实现
2018/10/09 Python
Python文件常见操作实例分析【读写、遍历】
2018/12/10 Python
python经典趣味24点游戏程序设计
2019/07/26 Python
Python批量安装卸载1000个apk的方法
2020/04/10 Python
python 使用raw socket进行TCP SYN扫描实例
2020/05/05 Python
CSS3使用多列制作瀑布流
2016/05/10 HTML / CSS
日本最大级玩偶手办购物:あみあみ Amiami
2018/04/23 全球购物
经济实惠的名牌太阳镜和眼镜:Privé Revaux
2021/02/07 全球购物
搞笑婚礼主持词
2014/03/13 职场文书
初二学习计划书范文
2014/04/27 职场文书
2014年十八届四中全会思想汇报范文
2014/10/17 职场文书
离婚案件被告代理词
2015/05/23 职场文书
公司员工违法违章行为检讨书
2019/06/24 职场文书
来探秘“德国中小企业”的成功之道
2019/07/26 职场文书
基于Redis延迟队列的实现代码
2021/05/13 Redis