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 相关文章推荐
合并table相同单元格的jquery插件分享(很精简)
Jun 20 Javascript
javascript得到当前页的来路即前一页地址的方法
Feb 18 Javascript
jquery动态添加元素事件失效问题解决方法
May 23 Javascript
浅谈Javascript数据属性与访问器属性
Jul 26 Javascript
Bootstrap基本样式学习笔记之表单(3)
Dec 07 Javascript
Sequelize中用group by进行分组聚合查询
Dec 12 Javascript
JS中解决谷歌浏览器记住密码输入框颜色改变功能
Feb 13 Javascript
深入理解Vue 的条件渲染和列表渲染
Sep 01 Javascript
浅谈React和Redux的连接react-redux
Dec 04 Javascript
快速解决Vue项目在IE浏览器中显示空白的问题
Sep 04 Javascript
利用JS响应式修改vue实现页面的input值
Sep 02 Javascript
使用JS实现动态时钟
Mar 12 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视频拍照上传头像功能实现代码分享
2015/10/08 PHP
PHP的curl函数的用法总结
2019/02/14 PHP
JS.findElementById()使用介绍
2013/09/21 Javascript
JavaScript判断表单为空及获取焦点的方法
2016/02/12 Javascript
js数组常用操作方法小结(增加,删除,合并,分割等)
2016/08/02 Javascript
JQuery ZTree使用方法详解
2017/01/07 Javascript
JS+HTML5实现上传图片预览效果完整实例【测试可用】
2017/04/20 Javascript
微信小程序 request接口的封装实例代码
2017/04/26 Javascript
javascript中mouseenter与mouseover的异同
2017/06/06 Javascript
微信小程序--组件(swiper)详细介绍
2017/06/13 Javascript
JavaScript实现简单生成随机颜色的方法
2017/09/21 Javascript
详解vue-cil和webpack中本地静态图片的路径问题解决方案
2017/09/27 Javascript
详解使用VueJS开发项目中的兼容问题
2018/08/02 Javascript
微信小程序实现富文本图片宽度自适应的方法
2019/01/20 Javascript
开发Node CLI构建微信小程序脚手架的示例
2020/03/27 Javascript
微信小程序scroll-view实现滚动到锚点左侧导航栏点餐功能(点击种类,滚动到锚点)
2020/06/11 Javascript
在antd4.0中Form使用initialValue操作
2020/11/02 Javascript
Python设计模式之观察者模式实例
2014/04/26 Python
Python unittest模块用法实例分析
2018/05/25 Python
python数据处理 根据颜色对图片进行分类的方法
2018/12/08 Python
Python Pexpect库的简单使用方法
2019/01/29 Python
详解如何在cmd命令窗口中搭建简单的python开发环境
2019/08/29 Python
pytorch实现seq2seq时对loss进行mask的方式
2020/02/18 Python
Python 找出出现次数超过数组长度一半的元素实例
2020/05/11 Python
python_matplotlib改变横坐标和纵坐标上的刻度(ticks)方式
2020/05/16 Python
全球游戏Keys和卡片市场:GamesDeal
2018/03/28 全球购物
美国最大的在线寄售和旧货店:Swap.com
2018/08/27 全球购物
室内设计实习自我鉴定
2013/09/25 职场文书
资料员岗位职责
2013/11/17 职场文书
电子商务自荐书范文
2014/01/04 职场文书
保险公司早会主持词
2014/03/22 职场文书
三年级学生评语
2014/04/23 职场文书
2015关于重阳节的演讲稿
2015/03/20 职场文书
《日月潭》教学反思
2016/02/20 职场文书
MySQL系列之十三 MySQL的复制
2021/07/02 MySQL
ant design charts 获取后端接口数据展示
2022/05/25 Javascript