layui--select使用以及下拉框实现键盘选择的例子


Posted in Javascript onSeptember 24, 2019

注意几点:

1.select下拉框一定要放到layui-form类下。这个layui-form不是必须放在form上,放在一个div也是可以的

2.要注意每次form render之后呢,要重新注册事件。

<!DOCTYPE html>
<html>
<head>
 <meta charset="utf-8">
 <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
 <title>开始使用layui</title>
 <link rel="stylesheet" href="./layui/css/layui.css" rel="external nofollow" >
</head>
<body>
 
 
 
 
 
<form class="layui-form" action="">
 <div class="layui-form-item">
 <label class="layui-form-label">输入框</label>
 <div class="layui-input-block">
  <input type="text" name="title" required lay-verify="required" placeholder="请输入标题" autocomplete="off" class="layui-input">
 </div>
 </div>
 <div class="layui-form-item">
 <label class="layui-form-label">密码框</label>
 <div class="layui-input-inline">
  <input type="password" name="password" required lay-verify="required" placeholder="请输入密码" autocomplete="off" class="layui-input">
 </div>
 <div class="layui-form-mid layui-word-aux">辅助文字</div>
 </div>
 <div class="layui-form-item">
 <label class="layui-form-label">选择框</label>
 <div class="layui-input-block">
  <select name="city" lay-verify="required" lay-search>
  <option value=""></option>
  <option value="0">北京</option>
  <option value="1">上海</option>
  <option value="2">广州</option>
  <option value="3">深圳</option>
  <option value="4">杭州</option>
  </select>
 </div>
 </div>
 <div class="layui-form-item">
 <label class="layui-form-label">复选框</label>
 <div class="layui-input-block">
  <input type="checkbox" name="like[write]" title="写作">
  <input type="checkbox" name="like[read]" title="阅读" checked>
  <input type="checkbox" name="like[dai]" title="发呆">
 </div>
 </div>
 <div class="layui-form-item">
 <label class="layui-form-label">开关</label>
 <div class="layui-input-block">
  <input type="checkbox" name="switch" lay-skin="switch">
 </div>
 </div>
 <div class="layui-form-item">
 <label class="layui-form-label">单选框</label>
 <div class="layui-input-block">
  <input type="radio" name="sex" value="男" title="男">
  <input type="radio" name="sex" value="女" title="女" checked>
 </div>
 </div>
 <div class="layui-form-item layui-form-text">
 <label class="layui-form-label">文本域</label>
 <div class="layui-input-block">
  <textarea name="desc" placeholder="请输入内容" class="layui-textarea"></textarea>
 </div>
 </div>
 <div class="layui-form-item">
 <div class="layui-input-block">
  <button class="layui-btn" lay-submit lay-filter="formDemo">立即提交</button>
  <button type="reset" class="layui-btn layui-btn-primary">重置</button>
 </div>
 </div>
</form>
 
 
 
<script src="./layui/layui.js"></script>
<script type="text/javascript" src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
 
 
<script type="text/javascript">
/***********layui下拉框选择,支持键盘*************/
 
layui.use('form', function(){
 var form = layui.form;
 var $ = layui.$;
 form.render();
 //每次渲染之后手注册事件
 $("dl").prev().find("input").attr("onkeydown","listenSelect.up(event,this)");
});
 
var listenSelect = {
 style:"layui-this",
 up:function (event,thisinput) {
  var keyCode = event.keyCode;
  var dl = $(thisinput).parent().next(); //找到渲染后的dl
  var curDd =(dl).find('.layui-this');
  if(keyCode==40){ //按下下键
   $(thisinput).parents('.layui-form-select').addClass('layui-form-selected');
   curDd = $(dl).find('.layui-this').nextAll(':not(.layui-hide)');
   if(curDd.length == 0){
    // curDd = $(dl).find('dd:first');
    curDd = $(dl).find('dd').not(".layui-hide").first();
   }else{
    curDd = curDd[0];
   }
  }else if(keyCode==38){
   $(thisinput).parents('.layui-form-select').addClass('layui-form-selected');
   curDd = $(dl).find('.layui-this').prevAll(':not(.layui-hide)');
   if(curDd.length == 0){
    curDd = $(dl).find('dd').not(".layui-hide").last();
   }else{
    curDd = curDd[0];
   }
  }
 
 
  dl.find("dd").removeClass(this.style); //移除样式
  $(curDd).addClass(this.style);
 
  var dd = $(dl).find('.layui-this');
 
 
  // 计算高度--start
  try{
   dd.offset().top - dl.offset().top + dl.scrollTop();
   dl.scrollTop(
    dd.offset().top - dl.offset().top + dl.scrollTop()-100
   );
  }catch(err){
   //console.log(err.stack);
  }
  // 计算高度--end
 
  if(keyCode == 13){
   $(dd).click();
   $(thisinput).focus(); // 再次得到焦点
   $(thisinput).attr("onkeydown","listenSelect.up(event,this)")
  }
  return false;
 }
};
 
/********END*******/
 
</script>
</body>
</html>

以上这篇layui--select使用以及下拉框实现键盘选择的例子就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript预览上传图片发现的问题的解决方法
Nov 25 Javascript
js获取input标签的输入值实现代码
Aug 05 Javascript
使用JS或jQuery模拟鼠标点击a标签事件代码
Mar 10 Javascript
浅谈Unicode与JavaScript的发展史
Jan 19 Javascript
jQuery提示插件alertify使用指南
Apr 21 Javascript
jQuery操作Table技巧大汇总
Jan 23 Javascript
js 弹出虚拟键盘修改密码的简单实例
Oct 10 Javascript
js仿京东轮播效果 选项卡套选项卡使用
Jan 12 Javascript
详解vue-cli中的ESlint配置文件eslintrc.js
Sep 25 Javascript
一文读懂ES7中的javascript修饰器
May 06 Javascript
微信小程序(订阅消息)功能
Oct 25 Javascript
vue实现购物车列表
Jun 30 Javascript
JS防抖和节流实例解析
Sep 24 #Javascript
vue.js实现图书管理功能
Sep 24 #Javascript
layui table单元格事件修改值的方法
Sep 24 #Javascript
Javascript Dom元素获取和添加详解
Sep 24 #Javascript
微信小程序全局变量的设置、使用、修改过程解析
Sep 24 #Javascript
layui监听select变化,以及设置radio选中的方法
Sep 24 #Javascript
layui 监听select选择 获取当前select的ID名称方法
Sep 24 #Javascript
You might like
追求程序速度,而不是编程的速度
2008/04/23 PHP
PHP 高级课程笔记 面向对象
2009/06/21 PHP
9段PHP实用功能的代码推荐
2014/10/14 PHP
PHP获取一年中每个星期的开始和结束日期的方法
2015/02/12 PHP
详解PHP队列的实现
2019/03/14 PHP
使两个iframe的高度与内容自适应,且相等
2006/11/20 Javascript
JavaScript中this关键字使用方法详解
2007/03/08 Javascript
实现连缀调用的map方法(prototype)
2009/08/05 Javascript
ajax 缓存 问题 requestheader
2010/08/01 Javascript
JavaScript跨浏览器获取页面中相同class节点的方法
2015/03/03 Javascript
JS实现文字放大效果的方法
2015/03/03 Javascript
使用Curl命令查看请求响应时间方法
2016/11/04 Javascript
Bootstrap基本组件学习笔记之列表组(11)
2016/12/07 Javascript
Vue实现导出excel表格功能
2018/03/30 Javascript
vuex 项目结构目录及一些简单配置介绍
2018/04/08 Javascript
JavaScript创建对象方式总结【工厂模式、构造函数模式、原型模式等】
2018/12/19 Javascript
JavaScript实现PC端四格密码输入框功能
2020/02/19 Javascript
JavaScript实现手机号码 3-4-4格式并控制新增和删除时光标的位置
2020/06/02 Javascript
从Node.js事件触发器到Vue自定义事件的深入讲解
2020/06/26 Javascript
[27:28]Ti4 冒泡赛第二天 iG vs NEWBEE 1
2014/07/15 DOTA
python sys模块sys.path使用方法示例
2013/12/04 Python
Django安装配置mysql的方法步骤
2018/10/15 Python
通过python爬虫赚钱的方法
2019/01/29 Python
Python中os模块功能与用法详解
2020/02/26 Python
Python下载的11种姿势(小结)
2020/11/18 Python
a标签下载链接的简单实现
2016/09/13 HTML / CSS
茵宝(Umbro)英国官方商店:英国足球服装生产商
2016/12/29 全球购物
德国在线订购鲜花:Fleurop
2018/08/25 全球购物
意大利男装网店:Vrients
2019/05/02 全球购物
台湾良兴购物网:EcLife
2019/12/01 全球购物
中学生运动会通讯稿大全
2014/09/18 职场文书
2016大学军训心得体会
2016/01/11 职场文书
2019毕业论文致谢词
2019/06/24 职场文书
浏览器常用基本操作之python3+selenium4自动化测试(基础篇3)
2021/05/21 Python
Python实现位图分割的效果
2021/11/20 Python
Python OpenGL基本配置方式
2022/05/20 Python