在Esc上,切换引导对话框

时间:2015-08-13 08:51:53

标签: jquery modal-dialog

通常,在Esc上,任何对话框都会消失。但是我们希望功能在Esc上启动引导对话框并在下一个Esc关闭它。 所以这是我的代码:

1.$(document).on("keyup", function(e){
2.  if(e.which == 27 && id == "#esc"){
3.      if(!$(dialogid).is(":visible")){
4.          $(dialogid).modal({'show':true, 'keyboard':false});         
5.        }else{
6.          $(dialogid).modal('hide');
7.      }
8.  }
9.});

直到我慢慢按下Esc键才能正常工作。但有时如果用户多次按住Esc键,则对话框会永久消失。控制到达第4行,即

$(dialogid).modal({'show':true, 'keyboard':false});         

但是这行不会启动弹出窗口。

  • 可能是什么原因?
  • 我该如何解决?

1 个答案:

答案 0 :(得分:2)

删除 {'show':true, 'keyboard':false}

并且只保留

$(dialogid).modal('show')

<强>实施例

$(document).on("keyup", function(e){
   if(e.which == 27){
      if(!$('#myModal').is(":visible")){
          $('#myModal').modal('show');         
        }else{
          $('#myModal').modal('hide');
      }
  }
});

<强> DEMO

<强>更新

使用setTimeout在不同的线程中运行

<强> DEMO

$(document).on("keyup", function(e){
   if(e.which == 27){
      if(!$('#myModal').is(":visible")){
          setTimeout(function(){
            $('#myModal').modal('show');         
          },100);
        }else{
            setTimeout(function(){
                $('#myModal').modal('hide');
            },100);
      }
  }
});