2011-05-16 53 views
10

在网页中我有一个搜索字段。我添加了一个“清除”按钮,以便用户可以清除搜索字段并重新开始。为了方便起见,我关注搜索框的文本框,光标确实出现在框中。然而,软键盘似乎不会显示在使用默认浏览器的Android设备上。在iOS和Opera Mobile中,它可以像我所期望的那样工作。当字段为.focus()'d使用javascript时显示Android的软键盘

是否有一个额外的方法,我可以调用这将导致键盘显示在Android的浏览器,以便用户可以开始立即打字?

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

回答

6

这个问题类似于 How to focus an input field on Android browser through javascript or jquery

无论如何,你已经有一个click事件的工作,这应该排序你出去:

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

    $('#button').click(function(e) { 
     $('#field').trigger('click'); 
    }); 
})  

当然,你需要一个触发这个事件的点击事件。只关注没有事件似乎不起作用。上面的作品适用于我在Android 4上的标准浏览器,并显示软键盘。

+0

需要注意的是,这似乎不适用于按键事件(这很奇怪,因为我期望在使用say,tab或enter键对新的文本字段进行对焦时,键盘会显示,因为我会集中精力在文本字段上......) – Michael 2013-12-06 21:31:22

+3

这也适用于touchstart + touchend事件。相当漂亮,因为你可以在touchstart上添加一个元素并触发touchend。请记住使用event.stopPropagation();和event.preventDefault();否则有时键盘将开始显示然后再次隐藏(取决于触发事件的元素下面的内容)。 – 2014-09-16 22:37:32

0

click()自己是不够。您需要focus(),然后click()。如果您的脚本由包含元素上的onclick()触发,请注意无限循环。下面的脚本适用于我的Chrome,适用于android 58和Safari mobile 602.1。

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

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