如何在某些区域用JS捕获键盘箭头,而不是其他区域
How to capture keyboard arrows with JS in some areas but not others
我在这里看到了一个很棒的问题/答案:在JS/jQuery中绑定箭头键
但是现在我有这个问题:虽然我可以使用箭头键浏览我的网站上的各种选择,但我不能再像以前那样在文本框中编辑东西,因为我的箭头不再像我期望的那样工作了。
。通过AJAX加载的第一页,我可以通过箭头键导航我的"选择"(即图像)。然后我保存我的选择(图像),并转到第二个页面,也是通过AJAX加载的。
但是,箭头绑定仍然有效,所以当我尝试使用右,左,Home, End, PgUp, PgDn箭头来导航文本框中的光标时,例如,纠正拼写错误,什么也不会发生,因为我已经阻止了默认行为,以避免在第1页上移动各种页面元素…
有办法解决这个问题吗?
我的代码:
不确定它在这里会有帮助。我不知道怎样才能帮到你,但我想说:
在第1页:
<script type="text/javascript">
/*************************************/
/* selection navigation via keyboard */
/*************************************/
$(document).keydown(function(e) {
switch(e.which)
{
case 37: $("#selectPrevious").click();break;
case 39: $("#selectNext").click();break;
case 33: $("#jump10Back").click();break;
case 34: $("#jump10Forward").click();break;
case 36: $("#jumpFirst").click();break;
case 35: $("#jumpLast").click();break;
default: return;
}
e.preventDefault();
});
</script>
,显然这个键赋值之后不会被擦除,因为我导航到第2页。我不希望绑定在第2页生效。澄清一下……有一个主页一直保持加载状态,页面1通过AJAX加载,然后它通过AJAX被页面2取代。
也许您可以将事件处理程序绑定到比document
更具体的元素。如果AJAX加载是在两个不同的容器中完成的,即#page1
和#page2
,您可以将按键绑定到其中一个:
$("#page1").keydown(function(e) {
// your code
})
另一个想法是在加载第二个页面时解除事件侦听器的绑定。因此,你可以使用jQuery的。off()或。unbind()方法:
if (loaded) {
(document).unbind("keydown");
}
这将解除document
的所有keydown事件的绑定。如果您想使解绑定更具体,您应该从匿名处理程序函数中创建一个命名函数;
function handleKeydown(e) {
switch(e.which)
{
case 37: $("#selectPrevious").click();break;
case 39: $("#selectNext").click();break;
case 33: $("#jump10Back").click();break;
case 34: $("#jump10Forward").click();break;
case 36: $("#jumpFirst").click();break;
case 35: $("#jumpLast").click();break;
default: return;
}
e.preventDefault();
});
// Bind the handler
$(document).keydown(handleKeydown);
// Unbind the handler
if (page2) {
$(document).unbind("keydown", handleKeydown);
}
from zerkms: "Just check the event source"
我检查了事件源,这为我工作。
- onkeyup无法动态创建多个文本区域
- 如何添加浮动和非浮动,其他
- 与其他库的jQuery.noConflict()
- 播放当前视频时如何停止其他视频?JavaScript
- FabricJs-限制主对象内添加对象的移动区域
- 清除文本区域会中断其他JS函数
- 如何将用户输入传递到其他文本区域
- j查询验证模糊文本区域与其他输入问题
- 将文本插入到其他页面上的文本区域中
- 使用 geojson 确定给定地理位置与哪些其他地理区域共享边界
- AngularJS-动态创建<text区域>使用ngSanitize不会't显示(其他元素显示)
- 从一个文本区域复制到所有其他文本区域
- 将文本区域中的字符串替换为其他文本
- 当改变一个文本区域的值改变其他值
- Javascript "if else"当条件不满足时,不会进入其他区域
- 如何在某些区域用JS捕获键盘箭头,而不是其他区域
- 当选择“其他”选项时显示文本区域
- jquery将中的值复制到其他区域
- 在其他数据标签上带有数据标签的Highcharts区域
- 当悬停其他内容时,下拉/在一个区域显示特定内容