我需要一种方法来使用它们的软键盘用于移动浏览器

时间:2015-02-18 03:05:40

标签: javascript angularjs html5

方案: 我有一个Web应用程序,我需要在中央位置捕获页面的所有键控输入。我的第一个解决方案是不断将焦点放在文本框中,以便所有焦点都在那里。这对于桌面浏览器来说非常有效,但会导致导致移动浏览器上的软键盘始终可见的不良影响。由于我的键输入来自外部来源,因此在我提出要求之前,我不希望键盘可见。由于没有直接的方式(我已经发现)这样做,我试图不断关注一个不会导致键盘显示的控件。我无法找到一个不会导致键盘显示的控件,但会触发其中一个关键事件(keydown / keyup / keypress)。

有没有人建议如何在不显示软键盘的情况下捕捉所有键控输入?

注意:如有必要,我可以为桌面和移动设备提供不同的解决方案。

感谢任何帮助!

2 个答案:

答案 0 :(得分:0)

好的,所以答案很简单,我简直不敢相信我花了这么长时间。

如果您只读文本框,它不会显示键盘,但仍会触发关键事件。这允许我接受来自外部源的输入而不显示键盘。我还添加了一个键盘切换按钮,它只是隐藏了只读文本框并显示了常规文本框。

如果我的应用程序不同,我可以添加并删除readonly属性并再次应用焦点以产生相同的效果。

感谢所有回复,包括已删除的回复。

答案 1 :(得分:0)

var keyedinput = "";
window.addEventListener('keydown', function(event){keyedinput += String.fromCharCode(event.keyCode)}, false);

keyedinput将包含来自类似外部键盘的设备的键控输入内容。只需在需要时将其作为全局变量引用。如果有一个输入/ esc键或"结束" key(sequence?)你可以检查相应的keyCode以使用变量的内容启动一个动作而不是附加到它。