如何通过javascript或jquery将输入字段聚焦在Android浏览器上

Posted

技术标签:

【中文标题】如何通过javascript或jquery将输入字段聚焦在Android浏览器上【英文标题】:How to focus an input field on Android browser through javascript or jquery 【发布时间】:2012-02-10 02:24:47 【问题描述】:

我尝试了$('#field').focus(),以及在互联网上找到的任何其他方法。没有任何效果。我有一个简单的 html 可以重现问题。

<!DOCTYPE html> 
<html> 
    <head> 
        <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
        <script type="text/javascript">
            $(document).ready(function() 
                $('#field').focus();
            );
    </script>
</head> 
<body>
    <input type="text" id="field" name="field"/>
</body>
</html>

请帮忙!

【问题讨论】:

没有理由这不应该工作,除非您使用 jQuery Mobile。 jQuery Mobile 改变了你通常期望的 DOM 生命周期。 我没有使用 jQuery Mobile,只是简单的 jQuery。请参阅示例。 当然可以,我在 Google 的搜索页面上看到,当您按建议上的箭头时。但是他们的js最小化了,我不明白是怎么做到的。 您是否尝试过将 #focus() 方法调用放在浏览器事件回调中以查看 fi ti 以这种方式工作?我不明白为什么 android 版本的 WebKit 会以这种方式偏离 chrome 版本......它可能有助于了解它不偏离预期行为的情况,以便了解它的情况。 另外,您是否尝试过将调用包装在匿名函数中以在对document.ready() 的调用中执行?例如:$(document).ready(function() (function() $('#field').focus();); ); 偶尔在匿名函数中包装一个动作以立即执行可以解决随机莫名其妙的 JS 问题。 【参考方案1】:

实际上,一般的javascript函数“focus”在android浏览器中是被禁用的。因此,jQuery 的焦点功能被停用了,因为它使用了上述内容。

【讨论】:

您能否链接有关此问题的更多信息源或解决方法?【参考方案2】:

如果您将它绑定到另一个点击事件,它将起作用。这对我有用:

    $(document).ready(function()
    

       $('#field').click(function(e) $(this).focus(); );

            $('body').click(function(e)
            
                $('#field').trigger('click');
            )
    )   

会弹出软键盘。 trigger() 将触发你给它的任何事件。在这种情况下,点击字段的默认行为==点击==焦点==赢!注意:此调用绑定到另一个单击事件发生。

【讨论】:

【参考方案3】:

click()focus() 单独不够。你需要focus() 然后click()。如果您的脚本是由包含元素上的 onclick() 触发的,请注意无限循环。下面的脚本适用于我的 Chrome for android 58 和 Safari mobile 602.1。软键盘弹出很好。

var target = document.getElementsByTagName("input")[0];

if (event.target != target) 
    target.focus();
    target.click();

【讨论】:

以上是关于如何通过javascript或jquery将输入字段聚焦在Android浏览器上的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Javascript 或 Jquery 将 JSON 对象包装在数组中?

通过javascript或jquery从输入框中获取包含月-日期格式的值

即使输入文本有效(Javascript或Jquery),如何强制输入文本无效

如何通过 javascript 或 jquery 读取巨大的文本文件?

使用 JavaScript 或 jQuery 检测哪个表单输入具有焦点

如何通过jQuery / Javascript获取更新的表单输入值?