2011-07-26 19 views
31

我正在創建我的網站的移動版本。網站的一部分會彈出一個對話框,其中包含文本輸入。通常我只是使用jQuery將焦點集中到文本輸入,但這不起作用。這是我想要的:在javascript中顯示手機上的虛擬鍵盤

$("#textinput").focus(); 
$("#textinput").click(); 
$("#textinput").trigger("tap"); //jQuery Mobile 

他們都沒有工作。有任何想法嗎?我一直在我的DroidX上測試它。我使用的是jQuery Mobile,但如果他們幫助我可以向其他圖書館開放。

回答

38

你不能,至少在iOS(iPhone)中,我也相信Android。這是一個可用性問題,鍵盤不應該被允許觸發,除非用戶輸入(如果它是自動的,這只是令人討厭的)。

有一對夫婦的方法,我知道的來解決這個問題:

  • prompt()打開鍵盤
  • 如果觸發來自.focus()一個.click()事件中(例如,從打開的對話框中)時,鍵盤顯示
+0

啊,說得通。理論上講,從他們的角度來看,鍵盤應該只在用戶因爲可用性原因將焦點集中到某個元素上時才起作用。但是,如果輸入是屏幕上的唯一信息,並且出於可用性原因,我想自動將焦點放在該元素上,鍵盤不會彈出。無論如何,感謝您的幫助。 – Adam

+1

一個巨大的警告是,這必須是一個'click'事件。即使'tap'和'click'基本相同,它必須是'click'事件,否則它不會打開 – Funkodebat

+0

但是爲什麼哦爲什麼在* keyboard *事件中觸發.focus()不起作用? – Michael

17

$(「#textinput」)。focus();

通過焦點設置爲輸入元件打開鍵盤,將只工作,如果,焦點被設置爲「用戶上下文」(例如點擊,鼠標按下,鼠標鬆開)內。

從「腳本上下文」(setTimeout,從ajax調用返回的回調),鍵盤不會顯示出來。

1

你可以使用:

$(textFiled).trigger("focus"); 

,你可以把這個代碼在一些功能,這將觸發打開某些重疊,或當文件已準備就緒。