【问题标题】:IE 8 Focus a div after the tab key has been pushed without jQueryIE 8在没有jQuery的情况下按下tab键后聚焦一个div
【发布时间】:2012-07-03 06:20:11
【问题描述】:

我们有一个简单的数据网格,我们通过 Tab 键启用导航。 (我们移动到下一个单元格)在 IE 7 和 8 中,当我们点击 tab 键时,它会导致焦点从网格移到下一个元素。

在其他浏览器中,我们通过在包含我们网格的 div 上调用 focus() 来防止焦点移动到页面上的下一个元素。在 IE 中这是行不通的,不管怎样,焦点都会转移。

我们可以做什么(不使用 jQuery)来将焦点保持在网格上,这样我们就可以反复按 Tab 键并在网格中的单元格中移动?

按回车键时也存在同样的问题。

【问题讨论】:

  • 您需要发布一个关于当前焦点代码如何工作的最小示例。在 HTML5 之前,只有表单控件、图像和链接等元素才能获得焦点。现在什么都可以。
  • 我看不出你的代码有什么问题。哦,等等,我没有看到 任何 代码 - 请帮助我们帮助您...
  • @RobG 如果所有代码都是 div.focus() 我认为代码示例不会有任何区别。有时我想知道代码示例的请求是否只是不回答的借口。
  • 如果这不会引发一场火焰战争,我不知道会是什么:)
  • @AranMulholland - 好吧,我会咬一口(一次):代码显然不仅仅是div.focus(),因为它必须在某个地方调用from。 OP 必须处理 some 事件,可能是模糊和/或焦点事件,所以 that 是我们希望看到的代码。 OP 应该 做的是处理 div 上的 keydown 事件并在按下 tab 或 enter 时取消它。 (是的,一些问题在没有代码示例的情况下很清楚,但这不是一个这样的问题。)

标签: javascript internet-explorer html focus


【解决方案1】:

在您的事件处理程序(onkeydown、keypress 等)中,当您完成处理 tab 键时,使用此代码:)

return false;

这可以防止发生默认行为,并应停止导航继续进行。

【讨论】:

    【解决方案2】:

    另一种方法是按照您希望它们访问的顺序对元素使用tabindex 属性。不需要脚本。

    不过,较旧的浏览器可能不支持 HTML5 版本,但很可能这些浏览器也不支持 focus 相同的元素。

    【讨论】:

    • 谢谢RobG,我会试试你的方法:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多