Javascript 如何防止从浏览器触发默认快捷方式
嗯,我正在尝试为web应用程序创建一个自定义快捷方式。但是我有一个小问题(我试图找到一个解决方案,但我只找到了Javascript 如何防止从浏览器触发默认快捷方式,javascript,Javascript,嗯,我正在尝试为web应用程序创建一个自定义快捷方式。但是我有一个小问题(我试图找到一个解决方案,但我只找到了preventDefault和快捷方式。add,我不太理解第二个) 我想知道如何在不调用浏览器快捷方式的情况下使用代码的自定义快捷方式。如果我使用shift键,默认的shotcut不会禁用大写字母书写 非常感谢智利的帮助和问候 var menu_abierto=false; $(document).on('keypress',function(e){ if(e.which==
preventDefault
和快捷方式。add
,我不太理解第二个)
我想知道如何在不调用浏览器快捷方式的情况下使用代码的自定义快捷方式。如果我使用shift键
,默认的shotcut不会禁用大写字母书写
非常感谢智利的帮助和问候
var menu_abierto=false;
$(document).on('keypress',function(e){
if(e.which==69 && e.ctrlKey && menu_abierto==false){
$('.btn-1,.btn-2 ,.btn-3').prop('disabled',true);
$('#lista-emergencias').show();
MenuLateralIzq();
listarEmergencias();
menu_abierto=true;
} else if(e.which==69 && e.ctrltKey){
$('.btn-1 ,.btn-2, .btn-3').prop("disabled",false);
$('#lista-emergencias ul li').remove();
$('#lista-emergencias ul hr').remove();
$('#lista-emergencias').hide();
OcultarMenuIzq();
menu_abierto=false;
}
});
您必须添加
e.preventDefault()
以阻止默认浏览器操作,然后添加自定义操作:
if( e.target.tagName.toUpperCase() != 'INPUT' ){
if(e.which==69 && e.ctrlKey && menu_abierto==false){
e.preventDefault();
$('.btn-1,.btn-2 ,.btn-3').prop('disabled',true);
$('#lista-emergencias').show();
MenuLateralIzq();
listarEmergencias();
menu_abierto=true;
} else if(e.which==69 && e.ctrltKey){
e.preventDefault();
$('.btn-1 ,.btn-2, .btn-3').prop("disabled",false);
$('#lista-emergencias ul li').remove();
$('#lista-emergencias ul hr').remove();
$('#lista-emergencias').hide();
OcultarMenuIzq();
menu_abierto=false;
}
}
添加if(e.target.tagName.toUpperCase()!='INPUT'){
说明:
e.target
表示当前选定的元素,标记名
在将返回input
,toUpperCase()的输入字段中获取此元素的类型
为了确保返回的输入
字符串处于模式大写
,!=“输入”
意味着如果没有输入,换句话说,如果所选元素不是输入字段,则可以用自定义快捷键替换浏览器快捷键
勾选SO问题/答案
希望这有帮助。您需要设置两件事: 阻止当前事件的进一步传播
如果事件是可取消的,则取消事件,而不停止事件的进一步传播。您有一个键入btw
e.ctrltKey
而不是e.ctrlKey
。并且您不需要像这样检查布尔值。menu\u abierto==false
与相同!menu\u abierto
。我对您的解决方案只有一个问题注意,当我想在快捷方式用于输入字段的字母上使用大写字母时,在我释放shift键之前,大写字母不会显示。我如何解决这个问题?