Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 恢复箭头键的默认值_Javascript_Jquery_Impress.js - Fatal编程技术网

Javascript 恢复箭头键的默认值

Javascript 恢复箭头键的默认值,javascript,jquery,impress.js,Javascript,Jquery,Impress.js,我正在使用一个脚本(impress.js),它为左箭头、右箭头、上箭头和下箭头存储一些特定的操作来设置keyup和keydown事件 在某些特定时刻(例如在文本区域中键入时),我希望返回箭头的默认行为 我试过了,但没有成功 $("a#show-ta").click( function() { document.addEventListener("keydown", function ( event ) { if (event.keyCode >= 37 &&

我正在使用一个脚本(impress.js),它为左箭头、右箭头、上箭头和下箭头存储一些特定的操作来设置keyup和keydown事件

在某些特定时刻(例如在文本区域中键入时),我希望返回箭头的默认行为

我试过了,但没有成功

$("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;
    }
  }); 
}); 
$(“显示ta”)。单击(函数(){
文档.添加的事件列表器(“键控”,函数(事件){

如果(event.keyCode>=37&&event.keyCode=37&&event.keyCode您希望防止按键冒泡到(我假设)Impress绑定其处理程序的文档:

$("textarea").on('keyup keydown keypress', function(e) {
  e.stopPropagation();
});

您希望防止按键冒泡到(我假设)Impress绑定其处理程序的文档:

$("textarea").on('keyup keydown keypress', function(e) {
  e.stopPropagation();
});

如果需要在特定区域(如texarea)中传播事件,则应按如下方式停止事件传播:

$('textarea').keydown( function(ev) {
    ev.stopPropagation();
});
例如,如果整个页面都需要这些事件,但您希望在文本区域中排除这些事件,则可以在事件中发出一个要验证的标志

var keydownActivated = true;

$('textarea').keydown( function(ev) {
    if (keydownActivated) {
        ev.preventDefault();
        // dostuff
    }
});

如果需要在特定区域(如texarea)中传播事件,则应按如下方式停止事件传播:

$('textarea').keydown( function(ev) {
    ev.stopPropagation();
});
例如,如果整个页面都需要这些事件,但您希望在文本区域中排除这些事件,则可以在事件中发出一个要验证的标志

var keydownActivated = true;

$('textarea').keydown( function(ev) {
    if (keydownActivated) {
        ev.preventDefault();
        // dostuff
    }
});

这或多或少会让你知道你要去哪里。创建一个跟踪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
});

这或多或少会让你知道你要去哪里。创建一个跟踪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
});

我建议在textarea有焦点时使用一个标志来绕过正常事件handlers@RobM.你能告诉我更多的细节吗?我不是很专业,我建议在文本区域有焦点时使用标志来绕过你的正常事件handlers@RobM.你能告诉我更多的细节吗?我不是那么专业谢谢,这正是我需要的,我会接受答案谢谢,这正是我需要的,我会接受答案的