通常,在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});
但是这行不会启动弹出窗口。
答案 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);
}
}
});