Layer弹窗回车执行确定按钮事件

layer.open({
    type: 1,
    content: 'Where is the love?',
    btn: ['确定'],
    success: function(layero, index){
        this.enterConfirm = function(event){
            if(event.keyCode === 13){
                $(".layui-layer-btn0").click();
                return false; //阻止系统默认回车事件
            }
        };
        $(document).on('keydown', this.enterConfirm); //监听键盘事件

        // 点击确定按钮回调事件
        $(".layui-layer-btn0").on("click",function() {
            console.log("peace and love");
        })
    },
    end: function(){
        $(document).off('keydown', this.enterConfirm); //解除键盘事件
    }
});




同样的,实现按 Esc 键关闭弹窗也是一样的方法,代码如下所示:

layer.open({
    type: 1,
    content: 'Where is the love?',
    btn: ['确定'],
    success: function(layero, index){
        this.escQuit = function(event){
            if(event.keyCode === 0x1B){
                layer.close(index);
                console.log("peace and love");
                return false; //阻止系统默认回车事件
            }
        };
        $(document).on('keydown', this.escQuit); //监听键盘事件
    },
    end: function(){
        $(document).off('keydown', this.escQuit); //解除键盘事件
    }
});
条件:弹窗后不做任何点击操作或者聚焦操作
对于layer.load,弹出后反复按回车,load层将不断刷新,即使设置了自动消失也只有等不按回车键才会生效。
对于layer iframe层有表单就更糟糕了,每按一次回车,iframe表单页面将会被刷新,数据将会丢失。(这是form中存在input按回车会自动以form的method属性方法提交表单,如果你在提交按钮上设定了弹窗事件的话,将会直接提交,并且弹窗也被激发,出现错误)。
这似乎是打开iframe或弹窗后,鼠标的焦点出现了问题,鼠标的焦点还停留在激发窗口的控件上,每按一次回车,相当于反复弹窗,会在屏幕上叠很多层。
测试了一下,当弹窗后,点击弹窗身体的任意部位后(不包括标题),再按回车键就不会出现bug了。
parent.document.onkeydown = function(e){    
    var ev =parent. document.all ? window.event : e;  
    if(ev.keyCode==13) { 
        $('#loginBtn').trigger("click");
		return false
    }  
  } 

document.onkeydown = function(e){    
    var ev =document.all ? window.event : e;  
    if(ev.keyCode==13) { 
        $('#loginBtn').trigger("click");
		return false
    }  
  } 

只要把loginBtn换成弹出层的按钮即可


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
OpenLayers是一个用于创建交互式地图的JavaScript库。您提到的"openlayer弹窗"可能是指在OpenLayers地图中创建弹窗窗口的功能。 首先,为了创建OpenLayers弹窗,您需要一个DOM对象来承载弹窗内容。这可以通过在HTML页面中添加一个具有唯一ID的div元素来实现。该div元素将用作OpenLayers弹窗的容器。您可以在该div元素中添加其他元素,以定义弹窗的样式和内容。 为了定义弹窗的样式,您可以使用CSS来设置div元素的样式属性。您可以为弹窗容器div添加类名或直接为其设置样式属性。通过设置宽度、高度、背景颜色、边框样式等属性,您可以自定义弹窗的外观。 一旦您创建了弹窗容器和定义了其样式,您可以使用OpenLayers中的功能来处理弹窗的显示和关闭事件。通过监听地图上的特定事件,例如单击地图上的某个要素或位置,您可以触发弹窗的显示。在弹窗显示之后,您可以向其添加标题和内容。 在OpenLayers中,您可以使用Overlay类来实现弹窗的显示和关闭机制。Overlay类提供了打开和关闭弹窗的方法,以及设置弹窗内容的方法。通过将弹窗容器div作为Overlay的元素,您可以将其与地图关联起来,并实现在特定事件触发时显示弹窗。 总结一下,创建OpenLayers弹窗的步骤如下: 1. 在HTML页面中创建一个div元素,作为弹窗容器,并为其添加唯一的ID。 2. 使用CSS设置div元素的样式,以定义弹窗的外观。 3. 在OpenLayers中创建一个Overlay对象,将弹窗容器div作为其元素。 4. 监听地图上的特定事件,例如单击事件,当事件触发时,调用Overlay的打开方法以显示弹窗。 5. 在弹窗显示后,使用JavaScript动态添加标题和内容。 需要注意的是,弹窗的具体实现可能因您使用的OpenLayers版本和您的需求而有所不同。请确保参考OpenLayers的官方文档和示例代码以获取更详细和准确的信息。 参考资料: 目录 一、定义popup弹窗dom对象二、定义弹窗样式三、定义Overlay四、设置单击地图后弹窗显示信息五、设置弹窗关闭事件 要展示弹窗,我们首先需要一个dom对象来承载。 <div id="popup" class="ol-popup"> <a href="#" id="popup-closer" class="ol-popup-closer" onclick="closePopup();"></a> <div id="popup-title" class="popup-title"></div> <div id="popup-content" class="popup-content"></div> </div> 二、定义弹窗样式 layer弹窗:top.layer弹窗到父页面跨域,通过postMessage方法将子页面的配置对象发送到父页面中,父页面再通过子页面的配置对象打开弹窗,对象内不能存在事件

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值