JavaScript:分配焦点后的关键事件处理

时间:2010-06-29 02:03:49

标签: javascript focus key-events

在我的应用中,我需要创建自定义弹出窗口,并在尝试关闭它们时遇到问题。要打开弹出窗口,用户需要在选择菜单项时按“ENTER”。从那里弹出菜单,给出关闭按钮焦点,并在选择“关闭”或“提交”项目时点击“确定”后关闭。

当用户尝试关闭弹出窗口时,它会关闭,但由于关闭功能未使用键事件,因此最后再次打开它。

目前,我在文档中有onkeyup事件的关键事件功能,可以启用导航,然后我尝试将弹出关闭功能分配给onclick,onkeyup和onkeypress,但无论我尝试哪个,都要按“ENTER”弹出窗口关闭后,最终会到达主键事件功能。

我目前的快速修复是使用两个额外的布尔值,一个在弹出窗口关闭后变为真,另一个在主键事件函数看到第一个布尔值变为真后变为真(因为只有一个布尔值变为真窗口关闭后仍然允许事件由于某种原因到达主要功能)。

由于我需要在离开弹出窗口时选择相同的菜单项,取消选择菜单项,保存它的位置,然后返回它还需要更多的全局变量。

我大多只是想知道是否有更好的方法,因为我不希望有两个额外的全局变量浮动...

2 个答案:

答案 0 :(得分:0)

尝试使用event.preventDefault(info here)。向下滚动到标题为“防止默认”的部分

答案 1 :(得分:0)

更新:我在几乎同样的问题上回答了在不同情况下按空格键的问题。你去了: Check it out.


此外,旗帜也不错。如果您担心全局命名空间(这是一种很好的做法),您可以做两件事。

1。函数是对象。他们可以在每次调用时都有属性(如果你愿意,可以使用静态变量)。

function handler() {
  if ( handler.opened ) {
    // close window
    // ...
    handler.opened = false;
  } else {
    // open window
    // ...
    handler.opened = true;
  }
}

// initialize property
handler.opened = false;