layui–select使用以及下拉框实现键盘选择[通俗易懂]

layui–select使用以及下拉框实现键盘选择[通俗易懂]layui–select使用以及下拉框实现键盘选择

大家好,又见面了,我是你们的朋友全栈君。

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

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

<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>

 

转载于:https://my.oschina.net/Skynet01/blog/1923890

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/107374.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • PHP 获得当前页面所有变量常量的值

    PHP 获得当前页面所有变量常量的值

    2021年9月25日
    52
  • 实现PC视频播放最强画质教程( Potplayer播放器+MADVR插件)【转】

    实现PC视频播放最强画质教程( Potplayer播放器+MADVR插件)【转】转自:http://www.hangge.com/blog/cache/detail_1461.html一、MADVR介绍MADVR 是一款超强的视频插件,其配合高清播放软件,可以做到目前 PC 上播放高清视频的最强画质。MADVR 这款视频渲染器比市面上大多数播放器自带的渲染器有着更精确的颜色处理,更高质量的图像缩放缩放、以及更低的颜色错误率。这就使得它所渲染出来的视频在颜色上更…

    2025年11月15日
    3
  • Keytool命令详解

    以前用过几次这个东东,但每次都重新查询一次。本文原始出处是这里 。-----------------------------------------------------------Keytool 是一个Java 数据证书的管理工具,Keytool 将密钥(key)和证书(certificates)存在一个称为keystore的文件中在keystore里,包含两种数据: 密钥

    2022年4月4日
    47
  • qmk固件是什么_qt5svg.dll

    qmk固件是什么_qt5svg.dll操作步骤:1.安装qtp10.02.拷贝mgn-mqt82.exe到C:\ProgramFiles\MercuryInteractive(创建)文件夹下3.创建C:\ProgramFiles\CommonFiles\MercuryInteractive\LicenseManager文件夹4.执行mgn-mqt82.exe5.复制lservrc,整个电脑搜索,搜索出来之后使用t…

    2022年10月5日
    4
  • Nginx搭建小型图片服务器

    Nginx搭建小型图片服务器

    2021年6月1日
    122
  • nginx解决前端跨域问题_ajax跨域请求cors

    nginx解决前端跨域问题_ajax跨域请求cors通过Nginx模块HttpHeadersModule来添加Access-Control-Allow-Origin允许的地址。在Nginx的conf目录下修改nginx.conf,添加以下代码location~*\.(eot|ttf|woff|svg|otf)${add_headerAccess-Control-Allow-Origin*;}//eot|tt

    2022年8月24日
    6

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号