2011-05-16 58 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(); 
}