我正在使用一个脚本(impress.js),它将一些特定操作分别用于左,右,上和下箭头的键盘和键控事件。
在某些特定时刻(例如在输入textarea时)我想要回到箭头的默认行为。
我用
尝试没有成功$("a#show-ta").click( function() {
document.addEventListener("keydown", function ( event ) {
if (event.keyCode >= 37 && event.keyCode <= 40) {
return;
}
});
document.addEventListener("keyup", function ( event ) {
if (event.keyCode >= 37 && event.keyCode <= 40) {
return;
}
});
});
其中a#show-ta
是显示我的textarea的按钮。
答案 0 :(得分:1)
你想阻止按键冒泡到文件中(我假设)Impress绑定其处理程序:
$("textarea").on('keyup keydown keypress', function(e) {
e.stopPropagation();
});
答案 1 :(得分:1)
如果您需要特定区域中的事件,例如texarea,您应该停止传播事件,如下所示:
Intent
如果整个页面都需要这些事件,但是当你在textarea中时想要排除,你可以举起一个你将在事件中验证的标志。
$('textarea').keydown( function(ev) {
ev.stopPropagation();
});
答案 2 :(得分:0)
这或多或少会让你到达目的地。创建一个标记,跟踪textarea是否具有焦点,并在当前按键事件处理程序中检查该标志。我看不到你的所有代码,所以这只是一个简单的例子:
var textareaHasFocus = false;
var textarea = document.querySelector('#yourTextarea');
textarea.addEventListener('focus', function(event) {
textareaHasFocus = true;
}, false);
textarea.addEventListener('blur', function(event) {
textareaHasFocus = false;
}, false);
document.addEventListener("keydown", function ( event ) {
if (textareaHasFocus) return true;
// your current keyboard handler
});
document.addEventListener("keyup", function ( event ) {
if (textareaHasFocus) return true;
// your current keyboard handler
});