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 相关文章推荐
用tip解决Ext列宽度不够的问题
Dec 13 Javascript
JavaScript 字符编码规则
May 04 Javascript
jQuery实现左右切换焦点图
Apr 03 Javascript
Javascript实现汉字和拼音互转的终极方案
Oct 19 Javascript
基于javascript实现按圆形排列DIV元素(一)
Dec 02 Javascript
基于Angular.js实现的触摸滑动动画实例代码
Feb 19 Javascript
JavaScript表单验证实现代码
May 22 Javascript
JS随机排序数组实现方法分析
Oct 11 Javascript
基于JavaScript实现幸运抽奖页面
Jul 05 Javascript
Vue动态路由缓存不相互影响的解决办法
Feb 19 Javascript
深入理解Puppeteer的入门教程和实践
Mar 05 Javascript
关于Vue Router的10条高级技巧总结
May 06 Vue.js
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
php fckeditor 调用的函数
2009/06/21 PHP
PHP中soap的用法实例
2014/10/24 PHP
PHP中spl_autoload_register()函数用法实例详解
2016/07/18 PHP
php使用QueryList轻松采集js动态渲染页面方法
2018/09/11 PHP
点弹代码 点击页面任何位置都可以弹出页面效果代码
2012/09/17 Javascript
JS来动态的修改url实现对url的增删查改
2014/09/05 Javascript
jquery简单图片切换显示效果实现方法
2015/01/14 Javascript
jQuery中$(function() {});问题详解
2015/08/10 Javascript
jquery中object对象循环遍历的方法
2015/12/18 Javascript
详解Node.js包的工程目录与NPM包管理器的使用
2016/02/16 Javascript
jQuery模仿阿里云购买服务器选择购买时间长度的代码
2016/04/29 Javascript
基于JS分页控件实现简单美观仿淘宝分页按钮效果
2016/11/07 Javascript
从零开始做一个pagination分页组件
2017/03/15 Javascript
nodejs+websocket实时聊天系统改进版
2017/05/18 NodeJs
详解react如何在组件中获取路由参数
2017/06/15 Javascript
一些手写JavaScript常用的函数汇总
2019/04/16 Javascript
Echarts动态加载多条折线图的实现代码
2019/05/24 Javascript
jQuery中DOM操作原则实例分析
2019/08/01 jQuery
详解vue-flickity的fullScreen功能实现
2020/04/07 Javascript
[02:10]三分钟回顾完美世界城市挑战赛
2019/01/24 DOTA
python 遍历字符串(含汉字)实例详解
2017/04/04 Python
深入理解Python中的super()方法
2017/11/20 Python
对Python通过pypyodbc访问Access数据库的方法详解
2018/10/27 Python
python实现逐个读取txt字符并修改
2018/12/24 Python
基于python二叉树的构造和打印例子
2019/08/09 Python
tensorflow mnist 数据加载实现并画图效果
2020/02/05 Python
Django3中的自定义用户模型实例详解
2020/08/23 Python
美国美发品牌:Bumble and Bumble
2016/10/08 全球购物
SmartBuyGlasses美国官网:太阳眼镜和眼镜
2017/08/20 全球购物
CAT鞋美国官网:CAT Footwear
2017/11/27 全球购物
海蓝之谜英国官网:La Mer英国
2020/01/15 全球购物
西班牙用户之间买卖视频游戏的平台:Wakkap
2020/03/21 全球购物
计算机通信工程专业毕业生推荐信
2013/12/24 职场文书
工程承诺书怎么写
2014/05/24 职场文书
群众路线专项整治方案
2014/10/27 职场文书
2014年技术员工作总结
2014/11/18 职场文书