鼠标点击时,下拉菜单出现
鼠标划过或按键盘上下箭头时,选中的菜单背景色变化,选项内容显示在输入框内
鼠标点击或按下回车或空格键时,对应的内容显示在输入框内且下拉菜单消失

效果图

HTML

 <div id="cont"><input type="text" name="" id="txt" value="" /><ul><li>选项1</li><li>选项2</li><li>选项3</li><li>选项4</li><li>选项5</li><li>选项6</li></ul></div>

CSS

<style type="text/css">* {margin: 0;padding: 0;list-style: none;}#cont {width: 300px;margin: 40px auto;}input {width: 296px;height: 40px;}ul {background: #eee;display: none;}ul li {line-height: 30px;text-indent: 20px;border-bottom: solid 1px black;}ul li.active {background: #ccc;}</style>

JS

var input = document.querySelector('input');var ul = document.querySelector('ul');var li = document.querySelectorAll('li');var index = -1;//输入框获取焦点时,所有的下拉菜单出现input.onfocus = function () {ul.style.display = 'block';}//输入框失去焦点时,所有的下拉菜单出现input.onblur = function () {ul.style.display = 'none';}//鼠标滑过时,对应的li背景色改变,li内容显示在输入框中li.forEach(function (li, key) {//鼠标移入li.onmouseover = function overFn() {var res1 = document.querySelector('.active');res1 && (res1.className = "");input.value = this.innerText;this.className = 'active';index = key;};li.onmouseout = outFn;//鼠标移出})//鼠标移出function outFn() {this.className = '';}//键盘上下键选择  上38,下40//按上键时,索引--,对应的li背景色改变,li内容显示在输入框中//按下键时,索引++,对应的li背景色改变,li内容显示在输入框中input.onkeydown = function (eve) {eve = eve || window.event;select(eve);}function select(eve) {var tops = eve.keyCode;var res = document.querySelector('.active');res && (res.className = "");for (var i = 0; i < li.length; i++) {li[i].className = '';}if (eve.keyCode == 38) {index--;if (index < 0) {index = li.length - 1}}if (eve.keyCode == 40) {index++;if (index > li.length - 1) {index = 0;}}if (eve.keyCode == 32 || eve.keyCode == 13) {if (index == -1) {input.value = '';} else {input.value = li[index].innerText;}ul.style.display = 'none'}if (eve.keyCode == 8) {index = -1;}if (index != -1) {li[index].className = 'active';input.value = li[index].innerText;} else {input.value = '';}console.log(eve.keyCode);}

【JS】模拟下拉菜单相关推荐

  1. php 类似微信下拉菜单,微信小程序模拟下拉菜单开发实例

    本文主要和大家分享微信小程序模拟下拉菜单开发实例,希望能帮助到大家. 一.知识点 1.实现动态显示和隐藏某个控件 列表1data:{ open:false }, showitem:function() ...

  2. js实现下拉菜单动画效果

    js实现下拉菜单动画效果 <!DOCTYPE html> <html lang="en"> <head><meta charset=&qu ...

  3. Js模拟下拉框(select-option)的实现

    js模拟下拉框 今天想给大家分享一下之前自己做的一个js模拟下拉框,所有select-option中我能发现的操作,都在我的代码中将其实现,希望对大家有所帮助.如果select中还有一些本人未实现的希 ...

  4. 用JS控制下拉菜单效果

    今天,突然想复习下之前学习做导航菜单的一些知识.之后觉得下拉菜单非常好玩儿,于是自己试着用JS调出了效果.网上有众多方法,但是感觉不是很对我的胃口,我喜欢HTML/CSS/JavaScript分离着写 ...

  5. 使用Jquery、HTML、CSS、JS实现下拉菜单列表

    下拉菜单列表 当鼠标进入时,效果如下: 鼠标离开时,下拉列表进行隐藏.效果如下: 下面展示代码 // <!DOCTYPE html> <html lang="en" ...

  6. html JS实现下拉菜单,vue.js怎么实现下拉框

    本文环境:windows7.vue2.9.6,该方法适用于所有品牌的电脑. vue.js实现下拉框的方法: www.php.cn vue下拉框 {{x.name}}{{x.famname}} {{on ...

  7. 用JS实现下拉菜单效果

    <!DOCTYPE html> <html><head><meta charset="UTF-8"><title>下拉菜 ...

  8. 原生JS实现下拉菜单操作

    原生JavaScript实现下拉菜单的操作 逻辑分析: (1)该布局实现分为两个部分,导航栏部分以及下拉菜单部分,因此我们需要使用标签的嵌套,一共使用两对ul和li标签,外面的ul构成导航栏的框架,在 ...

  9. js获取下拉菜单的值

    现在有一id=test的下拉框,怎么拿到选中的那个值呢? 分别使用javascript原生的方法和jquery方法 <select id="test"  name=" ...

最新文章

  1. 如何快速融入一个团队?
  2. ubuntu samba重启 mount命令
  3. eclipse集成maven插件
  4. 针对新手的Java EE7和Maven项目–第5部分–使用Arquillian / Wildfly 8进行单元测试
  5. nodejs 原理个人理解
  6. 部署描述符:web.xml
  7. (译)SDL.NET Surfaces 相关介绍
  8. Taro-library:Taro + Redux + 本地 Mock Server 示例项目
  9. android 人脸识别边框_Android相机预览,指定区域显示预览框,在区域内出现人脸进行人脸识别,并抓拍人脸照片存在本地...
  10. 《算法设计与分析》黄宇编著 课后习题参考答案
  11. PTP简介-IEEE1588协议
  12. Hadoop 版本与 HBase 版本 之间的对应关系整理
  13. 一元非线性回归方程(matplotlib)
  14. eigrp 扩散算法_EIGRP之DUAL(扩散更新算法)
  15. 8家公司笔面试经历-百度-联发科-瑞晟--
  16. XSS(Cross-site Script,跨站脚本)漏洞笔记
  17. 实用食品英语 (餐桌上用的)
  18. 莫比乌斯带catia建模_神奇的莫比乌斯带(mobius)
  19. 【三维目标检测】Part-A2(一)
  20. iOS底层原理之内存管理

热门文章

  1. aruba 开启802.1X认证
  2. php--------获取当前时间、时间戳
  3. LKT5103 32位高速软件加密锁
  4. docker部署mysql初始化数据库
  5. 2018年全国计算机网络大赛,2018年全国职业技能大赛高职组计算机网络应用赛项真题-I卷.docx...
  6. 营改增后不能抵扣的15种专用发票情形
  7. 一些元器件的选用依据
  8. mac外置硬盘安装linux,Mac外置硬盘上安装Linux图文教程
  9. 铃木uy125最高时速_UY125,这才是铃木踏板该有的样子!
  10. 基于STM32和超声波测距传感器的测距功能设计