.focus()“将焦点设置在目标输入上”在 Firefox 中不起作用

发布于 2024-10-22 07:05:40 字数 1039 浏览 2 评论 0原文

我有一个输入字段。在某些情况下,我希望用户在按下 Tab 键时将注意力集中在输入字段上。基本上我是在模仿谷歌自动填充搜索框的功能。我在每个浏览器中一切都工作正常,除了我从来没有遇到过问题的浏览器...... Firefox!?

以下代码在 IE、Chrome 和 Safari 中按预期工作,如果您使用 myInput 类按 Tab 键移出文本框,则焦点仍保留在文本框中。但在 Firefox 中,当您按 Tab 键移出文本框时,您将转到下一个文本框。 (这是我正在做的事情的一个非常简化的版本。如果我能让它工作,我将能够让我的真实代码工作。)

$(document).ready(
    function()
    {               
        $(".myInput").blur
        (
            function()
            {
                $(this).focus();
                $(this).select();
            }
        );      
    }
);

PS。请不要建议使用 setTimeout() 进行修复。谢谢。

我读过一些文章,描述了 jQuery 如何具有 .focus() 和 javascript 如何具有 .focus() 以及它们有何不同。我理解这一点(我认为),但我仍然无法弄清楚我做错了什么。

额外... 我可以让它以这种方式工作

$(document).ready(
    function()
    {               
        $(".myInput").blur
        (
            function()
            {
                setTimeout("$('.myInput').focus();",1);
            }
        );      
    }
);

看起来很黑客,但我不明白为什么 Firefox 不会将焦点放在模糊上。所以,如果你们中有人有答案,很高兴知道。

I have an input field. Under certain conditions I want to keep the user focused on the input field when they hit the Tab key. Basically I'm mimicking the functionality of Google's auto populating search box. I have everything working fine in every browser except the one I never have problems with... Firefox!?

The following code works as expected in IE, Chrome and Safari, if you Tab out of the textbox with class myInput, your focus stays in the textbox. But in Firefox, when you Tab out of the textbox, you will go to the next textbox. (This is a very simplified version of what I am doing. If I can get this to work, I'll be able to get my real code to work.)

$(document).ready(
    function()
    {               
        $(".myInput").blur
        (
            function()
            {
                $(this).focus();
                $(this).select();
            }
        );      
    }
);

PS. Please don't suggest a fix using setTimeout(). Thanks.

I have read articles describing how jQuery has .focus() and javascript has .focus() and how they are not the same. I understand this (I think), but I still am not able to figure out what I am doing wrong.

ADDED...
I can get it to work this way

$(document).ready(
    function()
    {               
        $(".myInput").blur
        (
            function()
            {
                setTimeout("$('.myInput').focus();",1);
            }
        );      
    }
);

Seems hackish but I can't figure out why Firefox won't set focus on blur. So, if any of you have the answer, it would be nice to know.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

霊感 2024-10-29 07:05:40

当您使用 jQuery 时,应该使用 .focusout() 方法。

http://api.jquery.com/focusout/

这与模糊事件不同,因为它支持检测父元素失去焦点(换句话说,它支持事件冒泡)。

As you are using jQuery should use the .focusout() method.

http://api.jquery.com/focusout/

This is distinct from the blur event in that it supports detecting the loss of focus from parent elements (in other words, it supports event bubbling).

も星光 2024-10-29 07:05:40

我能够通过避免上述问题来解决我的情况。

由于我正在处理 Tab 键,因此我没有尝试将焦点放回到用户按 Tab 键移出的字段中(就像我上面的尝试一样),而是在 Tab 键上使用了 PreventDefault() 。因此焦点永远不会丢失,而且我不必担心更换它。

displayTextBox.keydown
(
    function(event)
    {           
        // 9 = Tab Key
        if (event.keyCode == "9")
        {
            event.preventDefault();
        }
    }
);

我还没有对此进行彻底的测试,但到目前为止它似乎在 FF、Chrome 和 IE 中都有效。

I was able to resolve my situation by avoiding my question above.

Since I am dealing with the Tab key, instead of trying to place the focus back in the field that the user tabbed out of (like my attempt above), I used preventDefault() on the Tab key. Therefore focus is never lost, and I don't have to worry about replacing it.

displayTextBox.keydown
(
    function(event)
    {           
        // 9 = Tab Key
        if (event.keyCode == "9")
        {
            event.preventDefault();
        }
    }
);

I have not thoroughly tested this, but it seems to work so far in FF, Chrome and IE.

浅听莫相离 2024-10-29 07:05:40

尝试使用html属性onfocusout

Try to use the html attribute onfocusout

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文