显示Android';当字段为.focus()和#x27;使用javascript进行数据挖掘

显示Android';当字段为.focus()和#x27;使用javascript进行数据挖掘,javascript,jquery,android,html,android-softkeyboard,Javascript,Jquery,Android,Html,Android Softkeyboard,在网页中,我有一个搜索字段。我添加了一个“清除”按钮,以便用户可以清除搜索字段并重新开始。为了方便起见,我聚焦搜索字段的文本框,光标确实出现在该框中。但是,在使用默认浏览器的android设备上,似乎没有显示软键盘。在iOS和Opera Mobile中,它的工作方式与我预期的一样 我是否可以调用其他方法,使键盘显示在Android浏览器上,以便用户可以立即开始键入 function clear_search() { if($('#searchinput').val()) {

在网页中,我有一个搜索字段。我添加了一个“清除”按钮,以便用户可以清除搜索字段并重新开始。为了方便起见,我聚焦搜索字段的文本框,光标确实出现在该框中。但是,在使用默认浏览器的android设备上,似乎没有显示软键盘。在iOS和Opera Mobile中,它的工作方式与我预期的一样

我是否可以调用其他方法,使键盘显示在Android浏览器上,以便用户可以立即开始键入

function clear_search() {
    if($('#searchinput').val()) {
        $('#searchinput').val('');
    }
    $('#searchinput').focus();
}

我不是100%确定,但我认为这不能从javascript实现(至少在android 2.2之前是如此)。如果您使用的是phonegap,您可以在此处使用此选项:

此问题类似于

无论如何,由于您已经有了一个单击事件要处理,这应该可以帮您解决:

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

    $('#button').click(function(e) {
        $('#field').trigger('click');
    });
})     
当然,你需要一个点击事件来触发它。仅仅专注而不关注事件似乎是行不通的。以上内容适用于我在安卓4上的标准浏览器,并显示了软键盘。

单击()
本身是不够的。您需要
focus()
然后
单击()。如果脚本是由包含元素上的onclick()触发的,请注意无休止的循环。下面的脚本为我在Chrome for android 58和Safari mobile 602.1上工作

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

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

请注意,这似乎不适用于按键事件(这很奇怪,因为我希望在使用tab或enter键聚焦到新文本字段时,键盘会显示,因为我聚焦在文本字段上…),这也适用于touchstart+touchend事件。非常漂亮,因为您可以在touchstart上添加一个元素并触发touchend上的焦点。只需记住使用event.stopPropagation();和event.preventDefault();否则,有时键盘会开始显示,然后再次隐藏(取决于触发事件的元素下面的内容)。即使在android 2.2@user1207504上,如果使用最新的Chrome,其解决方案也会起作用。