恢复箭头键的默认值
Restore default value of arrows key
我正在使用一个脚本 (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;
}
});
});
其中 a#show-ta
是显示我的文本区域的按钮。
您想防止按键冒泡到(我假设)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
}
});
这或多或少会让你到达目的地。创建一个标记来跟踪文本区域是否具有焦点,并在当前的按键事件处理程序中检查该标记。我看不到你所有的代码,所以这只是一个简单的例子:
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
});
我正在使用一个脚本 (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;
}
});
});
其中 a#show-ta
是显示我的文本区域的按钮。
您想防止按键冒泡到(我假设)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
}
});
这或多或少会让你到达目的地。创建一个标记来跟踪文本区域是否具有焦点,并在当前的按键事件处理程序中检查该标记。我看不到你所有的代码,所以这只是一个简单的例子:
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
});