layer.confirm不确认就自动执行

提问 未结 7 166
莫名其妙78
莫名其妙78 2019-12-10
悬赏:20飞吻
var mzrcs=9;
var mzcsl=0;
var mz2_ok;
if(mzrcs!=0 && mzcsl ==0){
layer.confirm('门诊人次不为0,确认门诊产生量为0?', {icon: 3, title:'提示'},
function(index){//确认
mz2_ok = 1;
layer.msg('done1');
layer.close(index);
}, function(){//取消
layer.msg('done2');
layer.close();
});
}
if(mz2_ok == 1){//效果
layer.msg('done3');
}
上述代码,点击确定的时候,显示done1,但是不出现done3
如果把效果这里修改为if(true),则运行的时候,直接显示done3,确认框一闪而过。

请问需要如何修改使得confirm有效?
回帖
  • TimTou
    2019-12-11
    是你自己代碼的問題, layer.confirm是非阻塞模式的,如果是你上面的代碼,則是運行第一個判斷,彈出confirm之後,就運行第二個判斷為false,不顯示msg。整段JS就結束了。輸入是if(true),那麼運行第一個判斷,彈出confirm之後,就運行第二個判斷為true,顯示msg。並且因為layer不設定id的話,那麼只會顯示一個layer,所以會出現你說的顯示confirm一閃而逝,然後再彈出msg。
    1 回复
  • Liliy
    2019-12-11
    你的意思 是不点击确定就执行弹出框?没有太明白你的意思啊
    0 回复
  • 把if(mz2_ok == 1){//效果
    layer.msg('done3');
    }写在里面不行吗
    0 回复
  • @Liliy 我想符合条件,弹出确认框,确认,则继续下一个判断,否,则返回。
    0 回复
  • @TimTou 请问我要如何写才能实现我需要的效果呢?

    进行第一个判断的时候弹出确认框,确认以后赋值用来第二个判断,如果取消则返回
    0 回复
  • @白手起家想发财 因为f(mz2_ok == 1)还涉及到其它判断,我这个是简化了的代码
    0 回复
  • Liliy
    2019-12-11
    @莫名其妙78 那应该是if(){}else{}啊
    0 回复