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 相关文章推荐
js获取提交的字符串的字节数
Feb 09 Javascript
javascript 一段左右两边随屏滚动的代码
Jun 18 Javascript
前端开发必须知道的JS之原型和继承
Jul 06 Javascript
JS获取页面窗口大小的代码解读
Dec 01 Javascript
用js实现in_array的方法
Nov 05 Javascript
node.js中的http.response.setHeader方法使用说明
Dec 14 Javascript
原生javascript实现分享到朋友圈功能 支持ios和android
May 11 Javascript
jQuery.datatables.js插件用法及api实例详解
Oct 28 Javascript
Node.js中多进程模块Cluster的介绍与使用
May 27 Javascript
vue模块拖拽实现示例代码
Mar 09 Javascript
如何使用JavaScript实现无缝滚动自动播放轮播图效果
Aug 20 Javascript
详解JavaScript执行模型
Nov 16 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
php通过Chianz.com获取IP地址与地区的方法
2015/01/14 PHP
摘自百度的图片轮换效果代码
2007/11/19 Javascript
js优化针对IE6.0起作用(详细整理)
2012/12/25 Javascript
js实现图片轮播效果
2015/12/19 Javascript
基于JavaScript实现简单的随机抽奖小程序
2016/01/05 Javascript
一个仿微博登陆邮箱提示框js开发案例
2016/07/28 Javascript
BootStrap整体框架之基础布局组件
2016/12/15 Javascript
Bootstrap实现的经典栅格布局效果实例【附demo源码】
2017/03/30 Javascript
详解vue 配合vue-resource调用接口获取数据
2017/06/22 Javascript
node中Express 动态设置端口的方法
2017/08/04 Javascript
Vue实现表格中对数据进行转换、处理的方法
2018/09/06 Javascript
vue.js的vue-cli脚手架中使用百度地图API的实例
2019/01/21 Javascript
uni-app 支持多端第三方地图定位的方法
2020/01/03 Javascript
vue prop传值类型检验方式
2020/07/30 Javascript
Python实现树的先序、中序、后序排序算法示例
2017/06/23 Python
Python编程中类与类的关系详解
2019/08/08 Python
python解析xml文件方式(解析、更新、写入)
2020/03/05 Python
Python如何存储数据到json文件
2020/03/09 Python
基于nexus3配置Python仓库过程详解
2020/06/15 Python
Python爬虫之Selenium警告框(弹窗)处理
2020/12/04 Python
python 写一个水果忍者游戏
2021/01/13 Python
Python日志打印里logging.getLogger源码分析详解
2021/01/17 Python
芬兰灯具网上商店:Nettilamppu.fi
2018/06/30 全球购物
英国复古皮包品牌:Beara Beara
2018/07/18 全球购物
Ben Sherman官方网站:英国男装品牌
2019/10/22 全球购物
在DELPHI中调用存储过程和使用内嵌SQL哪种方式更好
2016/11/22 面试题
JavaScript实现页面动态验证码的实现示例
2021/03/23 Javascript
长安大学毕业生自我鉴定
2014/01/17 职场文书
大型车展策划方案
2014/02/01 职场文书
经理助理岗位职责
2014/03/05 职场文书
关于读书的演讲稿
2014/05/07 职场文书
精神文明建设汇报材料
2014/12/24 职场文书
汽车销售合同文本
2019/08/08 职场文书
快消品行业营销模式与盈利模式分享
2019/09/27 职场文书
从结婚开始的恋爱故事。小说《我的美好婚事》TV动画化决定
2022/04/07 日漫
tomcat下部署jenkins的方法
2022/05/06 Servers