layer.confirm 右上角关闭事件回调

就是在用layui开发项目中遇到表格中引用复选框做异步的时候遇到的问题,confirm右上角的按钮点击没反应,百度一下吧还都不对,并且不管哪个平台的代码还都一样,这就有点尴尬了,只能知己找找了,还是得仔细看文档啊,老话说得好:书读百遍其义自见。

layui文档

最后附上代码:

layer.confirm(msg, {
    btn: ['确定', '取消'],
    btn1:function(index, layero){
        // 按钮1回调
    },btn2: function(index){
        // 按钮2回调
    },end:function () {
        // 销毁回调
    }
});

就是这么简单。这么做有问题,就是如果有异步请求,弹框消失之后也会执行end方法。

针对我项目的解决方法是:

form.on('checkbox(lockDemo)', function(obj){

    var value = $(obj.elem).attr("data-value");

    if(this.value-1==0){
        $(obj.elem).prop("checked", true);// 不改变按钮颜色
        layui.form.render()
        var str = '确定***?';
    }else{
        $(obj.elem).prop("checked", false);//不改变按钮颜色
        layui.form.render()
        var str = '确定***?';
    }
    // 异步请求
    ******
    return false;
});

项目中遇到的问题是在表格中点击复选框按钮,改变状态,但是点击取消或者关闭按钮,颜色不变,异步返回后改变颜色。

Layer.js是一个常用的JavaScript插件,它提供了一种方便的方式来显示弹窗或确认对话框。当你遇到`layer.confirm` 和 `frameset` 冲突的情况,通常是因为frameset页面结构下,层叠窗口的定位可能会受到影响,导致预期的行为未按预期执行。 为了解决这个问题,你可以采取以下步骤让`layer.confirm`更像浏览器原生的`window.confirm`一样显示: 1. **避免直接在frameset内部使用**:尽量将弹窗操作放在顶层框架或者在非frameset区域的代码里,这样可以减少与frameset元素的交互冲突。 2. **修改CSS样式**:如果需要在frameset内显示,尝试调整层叠对话框的CSS属性,比如设置其`z-index`高于frameset元素,使其浮于内容之上。 3. **动态插入层**:如果确实需要在frameset中显示,可以在frameset之外创建一个新的Iframe或者Div,并将`layer.confirm`的结果绑定到这个新容器上,然后通过JavaScript控制其显示和隐藏。 4. **事件代理**:由于frameset限制了父子元素间的直接通信,你可以使用事件代理技术,监听父级元素的事件并在其中处理`layer.confirm`的回调。 ```javascript document.getElementById('parentFrame').addEventListener('click', function(event) { if (event.target.tagName === 'A') { // 检查点击目标是否为链接 layer.confirm('确认操作', { btn: ['确定', '取消'], callback: function(index) { // 这里处理点击后的业务逻辑 } }); } }); ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值