2013-03-17 107 views
9

我在我的移動網絡應用程序中有一些自定義Web組件,而我需要手動觸發某個字段上的「焦點」事件,以模擬Android軟鍵盤功能中的「下一個」功能。 (使用Galaxy S3本機瀏覽器)。我可以觸發Android軟鍵盤通過JavaScript打開(沒有phonegap)嗎?

但是,當我手動觸發「選擇」字段上的焦點事件時,本機軟鍵盤不顯示。我必須隨後點擊該字段才能顯示。 (在IOS中,當然,它工作得很好)。

所以我想知道,如果'焦點'事件不會觸發軟鍵盤打開什麼JS事件?

我沒有使用phonegap,所以我希望沒有它的方式。

感謝您的幫助!

回答

18

這裏有一個鏈接來自StackOverflow的:

Showing Android's soft keyboard when a field is .focus()'d using javascript

只是不集中不似乎工作的事件。 - 您需要觸發此事件的點擊事件爲 。

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

謝謝。我使用純JavaScript而不是jQuery,但這個概念工作:) – 29er 2013-03-18 02:35:36

+0

是否有可能顯示鍵盤沒有真正的點擊?我試圖隱藏按鈕,並單擊programmaticaly,但也沒有成功:http://jsfiddle.net/alex_myronov/e5JcP/8/ 也嘗試沒有按鈕,通過觸發點擊輸入... – 2014-01-10 16:35:04

+0

@ alex.mironov:檢查這一點。 http://stackoverflow.com/questions/6837543/show-virtual-keyboard-on-mobile-phones-in-javascript – oak 2014-02-27 09:36:48

2

您可以通過輸入呼叫focus()然後click()做到這一點。不需要jQuery。如果您的腳本由包含元素上的onclick()觸發,請注意無限循環。確保該腳本是由某些用戶交互觸發的。它不會從document.onload()或setTimeout()中工作。同樣的元素風格變化也很脆弱。下面的腳本適用於我的Chrome,適用於android 58和Safari mobile 602.1。

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

if (event.target != target) { 
    target.focus(); 
    target.click(); 
} 
相關問題