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)
上一篇 2022年4月20日 下午12:40
下一篇 2022年4月20日 下午1:00


相关推荐

  • css如何设置背景图片?background属性添加背景图片

    css如何设置背景图片?background属性添加背景图片在前端开发过程中 为了页面的美观 往往都会给 html 页面添加背景图片 那么如何利用 css 设置 html 中用图片做背景 本章就给大家介绍 css 怎样设置背景图片 有一定的参考价值 有需要的朋友可以参考一下 希望对你有所帮助 更多相关视频 0 基础前端利用 HTML CSS 制作你喜欢的暗黑破坏神网页开发 BV1C54y1X7ro 前端发展简史 功能以及未来趋势 你值得观看 BV1w5411s7e4 给想学编程又无从下手的小白一些建议 BV1Zf4y117ji HTML CSS 实现妙笔千山

    2026年3月18日
    2
  • IDEA 2025.1 版震撼发布,建议更新

            各位编程大神们!今天我要给大家带来一个超级劲爆的消息!IntelliJ IDEA 2025.1 终极版震撼发布啦!就像一颗超…

    2025年4月23日
    100
  • jrtplib linux编译,linux下jrtplib-3.9.1编译与安装.txt[通俗易懂]

    一、安装包准备1、进入官网http://research.edm.uhasselt.be/~jori/page/index.php?n=CS.Jrtplib下载jrtplib-3.9.1.tar.gz包,路径为:http://research.edm.uhasselt.be/jori/jrtplib/jrtplib-3.9.1.tar.gz注意:Download下边有一段话:Thelibrar…

    2022年4月10日
    36
  • AD域的搭建

    AD域的搭建AD域1——肯定是先添加AD域服务器开始—》所有程序—》管理你的服务器—》添加删除程序—》选择添加AD域然后一系列设置,记得搭建了好几次,每次搭建的时候还是要看文档问别人,这次索性就记录每一个步骤,到了检测DNS服务器那里了。2——打开DNS服务管理器,修改一下SOA的属性3——AD的作用是把用户添加到一个组中进行统一管理…

    2022年5月13日
    169
  • 入门篇-linux服务器部署openclaw教程

    入门篇-linux服务器部署openclaw教程

    2026年3月13日
    3
  • 协同过滤算法

    协同过滤算法###1.协同过滤算法协同过滤(CollaborativeFiltering)推荐算法是最经典、最常用的推荐算法。所谓协同过滤,基本思想是**根据用户之前的喜好以及其他兴趣相近的用户的选择

    2022年7月2日
    23

发表回复

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

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