【问题标题】:jQuery .focus() doesn't work [duplicate]jQuery .focus() 不起作用[重复]
【发布时间】:2013-10-10 10:37:19
【问题描述】:

我的目标是在使用 jQuery 加载页面后聚焦输入字段。所以我在这个例子中尝试了:

HTML:

<form>
   <input type="text" tabindex="1"><br>
   <input type="text" tabindex="2"><br>
   <input type="text" tabindex="3"><br>
   <input type="text" tabindex="4"><br>
</form>

JavaScript:

$(function () {
    $("*[tabindex='3']").focus();
});

但这不起作用(在 FireFox 24.0 中测试),尽管 StackOverflow 上的其他几个问题中建议使用这种方式。

随意尝试这个LIVE DEMO(有时您需要在第一个页面加载后点击运行)。

编辑:

将示例更改为关注第三个元素,因为默认情况下关注第一个元素。所以请尊重,如果您的解决方案适用于第一个元素,它可能不适用于另一个元素!

示例不适用于 FF 24.0/Win 7 和 IE 10/Win 7

编辑 2:

正如 ghusse 所指出的,该示例在小提琴上下文之外有效:DEMO 所以问题是;什么会导致 .focus() 函数不起作用?

【问题讨论】:

  • 它适用于我:Chrome 和 Firefox(最新版本)。
  • @Johnツ 不适合我.. WIN7/FF24
  • @ArunPJohny Interesintg,我在 Ubuntu...
  • 哇,我看到&lt;/input&gt;了吗?
  • 旁注 - 为什么input 有结束标签?

标签: javascript jquery html internet-explorer firefox


【解决方案1】:

那么这应该对你有用:

setTimeout(function(){
    $("*[tabindex='3']").focus();
},  1);

以最小的延迟使用 setTimeout。

【讨论】:

  • 不,同样的问题存在:(
  • 你能做一个JS小提琴的例子吗?
【解决方案2】:

我认为问题更多来自 jsfiddle 本身,而不是您的代码。

在 jsfiddle 中显示您的示例时,焦点设置为 javascript 代码窗口。

如果您在jsfiddle full screen mode 中显示您的代码结果,您会发现,实际上,它有效

$(function () {
  $("*[tabindex='3']").focus();
});

【讨论】:

  • 感谢您的建议
  • 感谢您的建议。你说的对。现在的问题是。是什么导致 .focus() 不再起作用,因为这个问题出现在我的项目中的另一个上下文中。
  • 我们需要更多地了解您的项目。因为,显然,它开箱即用。您的代码中可能还有其他东西会干扰焦点。
【解决方案3】:

您的代码似乎正确,也许小提琴有问题:

您的演示链接对我也不起作用,但“显示页面”很好:http://jsfiddle.net/jHWDE/26/show/

另外,我更喜欢添加“输入”而不是 * 以进行优化(这样只会检查输入元素而不是每个元素):

$("input[tabindex=3]").focus();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-23
    • 1970-01-01
    • 1970-01-01
    • 2010-11-22
    相关资源
    最近更新 更多