恢复箭头键的默认值

时间:2016-02-24 18:29:21

标签: javascript jquery impress.js

我正在使用一个脚本(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的按钮。

3 个答案:

答案 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
});