我的移动 Web 应用程序中有一些自定义 Web 组件,而我需要在字段上手动触发“焦点”事件,以模拟 Android 软键盘功能中的“NEXT”功能。(使用 Galaxy S3 原生浏览器)。
但是,当我在“选择”字段上手动触发焦点事件时,不会显示本机软键盘。我必须随后单击该字段以使其显示。(当然,在 IOS 中,它工作得很好)。
所以我想知道,如果“焦点”事件没有触发软键盘打开,那么 JS 事件会是什么???
我没有使用phonegap,所以我希望没有它的方法。
谢谢你的帮助!!!
我的移动 Web 应用程序中有一些自定义 Web 组件,而我需要在字段上手动触发“焦点”事件,以模拟 Android 软键盘功能中的“NEXT”功能。(使用 Galaxy S3 原生浏览器)。
但是,当我在“选择”字段上手动触发焦点事件时,不会显示本机软键盘。我必须随后单击该字段以使其显示。(当然,在 IOS 中,它工作得很好)。
所以我想知道,如果“焦点”事件没有触发软键盘打开,那么 JS 事件会是什么???
我没有使用phonegap,所以我希望没有它的方法。
谢谢你的帮助!!!
这是来自 StackOverflow 的链接:
使用 javascript 对字段进行 .focus() 处理时显示 Android 的软键盘
只是在没有事件的情况下集中注意力似乎不起作用。- 你确实需要一个点击事件来触发它。
$(document).ready(function() {
$('#field').click(function(e){
$(this).focus();
});
$('#button').click(function(e) {
$('#field').trigger('click');
});
});
您可以通过在输入上调用focus()
then来执行此操作。click()
不需要jquery。如果您的脚本是由包含元素上的 onclick() 触发的,请注意无限循环。还要确保此脚本是由某些用户交互触发的。它不适用于 document.onload() 或 setTimeout()。它也很脆弱,例如元素的同时样式更改。下面的脚本适用于我的 Chrome for android 58 和 Safari mobile 602.1。
var target = document.getElementsByTagName("input")[0];
if (event.target != target) {
target.focus();
target.click();
}
香草JS解决方案:
let button = document.getElementById("b");
let input = document.getElementById("i");
// Keyboard opens when focusing the input from a click listener
button.addEventListener("click", () => {
input.focus();
});
// Input field gets focus but keyboard doesn't open.
setTimeout(() => {
input.focus();
}, 1000);