你的位置:首页 > Java教程

[Java教程]jquery input 下拉框(模拟select控件)焦点事件


本章主要讲解如何实现select下拉列表可输入效果

ps:input提供输入,然后用ul去模拟一个select下拉列表效果即可,关键在于点击div之外的地方隐藏ul,下面是html基本结构:

 <div class="input-box">  <input type="text" class="input" value="Holle Word" />  <span class="tip-l"></span>  <ul class="dropdown">   <li>Holle Word</li>   <li>这是一个测试</li>   <li>简单的dome</li>  </ul> </div>

css效果 :

  .input-box {   position: relative;   display: inline-block;  }    .input-box input {   background-color: transparent;   background-image: none;   border: 1px solid #ccc;   border-radius: 4px;   box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075) inset;   color: #555;   display: block;   font-size: 14px;   line-height: 1.42857;   padding: 6px 6px;   transition: border-color 0.15s ease-in-out 0s, box-shadow 0.15s ease-in-out 0s;   width: 200px;   display: inline;   position: relative;   z-index: 1;  }    .tip-l {   width: 0;   height: 0;   border-left: 5px solid transparent;   border-right: 5px solid transparent;   border-top: 10px solid #555;   display: inline-block;   right: 10px;   z-index: 0;   position: absolute;   top: 12px;  }    .dropdown {   position: absolute;   top: 32px;   left: 0px;   width: 212px;   background-color: #FFF;   border: 1px solid #23a8ce;   border-top: 0;   box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075) inset;   z-index: 999;   padding: 0;   margin: 0;  }    .dropdown li {   display: block;   line-height: 1.42857;   padding: 0 6px;   min-height: 1.2em;   cursor: pointer;  }    .dropdown li:hover {   background-color: #23a8ce;   color: #FFF;  }

 

关键点js:

  var isBox = false; // 定义一个触发焦点事件的开关,默认为不开启状态 || 也可以给input设置一个属性,来判断  $(".dropdown").hide();   $(".input").focus(function () { // input绑定焦点事件,触发时打开焦点开关   $(this).siblings(".dropdown").show();    isBox = true;  });  $(".input-box").mousemove(function () { // 鼠标进入input-box区域内打开焦点开关   isBox = true;  });  $(".input-box").mouseout(function () { // 鼠标离开input-box区域内关闭焦点开关   isBox = false;  });  $(".input").blur(function () { // input失去焦点时通过焦点开关状态判断鼠标所在区域   if (isBox == true) return false;   $(this).siblings(".dropdown").hide();  });  $(".dropdown").find('li').each(function () { // 传值给input,同时关闭焦点开关   $(this).on("click", function () {    isBox = false;    var text = $(this).text();    $(this).parent().siblings(".input").val(text);    $(this).siblings(".dropdown").hide();   })  })

通过以上JS 应该能够明白了,通过鼠标的mousemove事件和mouseout事件来判断鼠标位置,利用focus和blur来做点击事件;

单靠click是无法判断鼠标的状态,如果给body绑定click事件,那么,实际上点击input也会触发body的click事件,而input也会触发本身事件,等于触发两次click事件;

 ps:input右侧的三角只是装饰作用,为了看起来更像select而已,用层级关系将他放在input下面,这样不会影响正常focus事件,如果三角需要点击效果,则需要将层级置顶,或者将input和span做成浮动关系,只不过这样就得转化成div焦点事件了(详细请看我的另一篇文章:http://www.cnblogs.com/ZevEssay/p/5953205.html)




瑞士旅游签证怎么办理瑞士旅游去哪好瑞士旅游团报价优惠瑞士蜜月旅游行程参考瑞士特价旅游多少钱惠州油菜花最佳观赏时间?惠州油菜花几月份最好看? 津城春色正洋溢 赏完桃花赏海棠 奇遇大自然是在呀诺达雨林拍摄的吗?奇遇大自然取景呀诺达雨林。 惠州油菜花什么时候开?2015惠州油菜花开花时间? 广州电视塔图片?广州电视塔摩天轮有什么好玩的? 广州电视塔自驾怎么走?广州电视塔摩天轮自驾攻略? 秀山门博物馆 回到明清时光里 广州长隆大马戏攻略?长隆大马戏自驾怎么走? 寒冷天气出游注意事项 新加坡旅行基础信息小贴士 马尔代夫旅游美食攻略,以及马尔代夫最佳旅游时间 非洲旅游注意事项——非洲旅游6大禁忌 饶平绿岛旅游山庄住一晚多少钱?绿岛旅游山庄房价? 绿岛山庄国庆节门票多少钱?饶平绿岛山庄十一国庆节活动? 花都宝桑园摘果时间表?宝桑园采摘季节什么时候? 宝桑园秋季也能采桑果吗?花都宝桑园秋季桑果采摘时间? TLYH1032(T15F) Datasheet TLYH1032(T15F) Datasheet TLYH1050(T20) Datasheet TLYH1050(T20) Datasheet TLYH1052(T20) Datasheet TLYH1052(T20) Datasheet 汕头南澳岛好玩吗 汕头南澳岛好玩吗 汕头南澳岛好玩吗 海南游报价 海南游报价 海南游报价 香港龙城大药房官网 香港龙城大药房官网 香港龙城大药房官网