2013-03-17 103 views
9

我在我的移动网络应用程序中有一些自定义Web组件,而我需要手动触发某个字段上的“焦点”事件,以模拟Android软键盘功能中的“下一个”功能。 (使用Galaxy S3本机浏览器)。我可以触发Android软键盘通过JavaScript打开(没有phonegap)吗?

但是,当我手动触发“选择”字段上的焦点事件时,本机软键盘不显示。我必须随后点击该字段才能显示。 (在IOS中,当然,它工作得很好)。

所以我想知道,如果'焦点'事件不会触发软键盘打开什么JS事件?

我没有使用phonegap,所以我希望没有它的方式。

感谢您的帮助!

回答

18

这里有一个链接来自StackOverflow的:

Showing Android's soft keyboard when a field is .focus()'d using javascript

只是不集中不似乎工作的事件。 - 您需要触发此事件的点击事件为 。

$(document).ready(function() { 
    $('#field').click(function(e){ 
     $(this).focus(); 
    }); 
    $('#button').click(function(e) { 
     $('#field').trigger('click'); 
    }); 
}); 
+1

谢谢。我使用纯JavaScript而不是jQuery,但这个概念工作:) – 29er 2013-03-18 02:35:36

+0

是否有可能显示键盘没有真正的点击?我试图隐藏按钮,并单击programmaticaly,但也没有成功:http://jsfiddle.net/alex_myronov/e5JcP/8/ 也尝试没有按钮,通过触发点击输入... – 2014-01-10 16:35:04

+0

@ alex.mironov:检查这一点。 http://stackoverflow.com/questions/6837543/show-virtual-keyboard-on-mobile-phones-in-javascript – oak 2014-02-27 09:36:48

2

您可以通过输入呼叫focus()然后click()做到这一点。不需要jQuery。如果您的脚本由包含元素上的onclick()触发,请注意无限循环。确保该脚本是由某些用户交互触发的。它不会从document.onload()或setTimeout()中工作。同样的元素风格变化也很脆弱。下面的脚本适用于我的Chrome,适用于android 58和Safari mobile 602.1。

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

if (event.target != target) { 
    target.focus(); 
    target.click(); 
} 
相关问题