2012-06-07 403 views
29

我正在開發優惠券公司的前端網站,我有一個頁面,用戶只需輸入電話號碼和$$花費。我們想出了一個有趣的使用Javascript構建的屏幕鍵盤,易於使用且速度更快。但是,我正在尋找一種解決方案,在用戶對焦並在這些字段中輸入文本/數字時停止彈出軟鍵盤。HTML手機 - 強制軟鍵盤隱藏

我知道HTML5提出的「數字/電話/電子郵件」類型屬性。但是,冒着瘋狂的風險,我真的只想使用我的屏幕鍵盤。

注意:本網站主要針對平板電腦。

謝謝。

+1

這是_is_瘋狂。如果您使用標準輸入字段,請使用標準輸入法。 – egrunin

+7

儘管如此,使用屏幕鍵盤還是有很多好處的,除此之外,使用和構建都很有趣。 其中之一,他們是高度可定製的,以密切關注您的觀衆的需求,第二安全,第三屏幕的房地產。;-) – crodica

+0

啊,我看到我誤解爲「前端*應用*」的「前端*網站*」。用戶對網站的期望更高。 – egrunin

回答

34

由於軟鍵盤是操作系統的一部分,通常情況下,您將無法隱藏它 - 同樣,在iOS上,隱藏鍵盤會從元素中隱藏焦點。

但是,如果你使用的輸入onFocus屬性,然後blur()文本輸入立即,鍵盤會隱藏自身和onFocus事件可以設置一個變量來定義其文本輸入集中最後。

然後改變你的頁面鍵盤,只改變最後聚焦(使用變量檢查)文本輸入,而不是模擬按鍵。

+0

謝謝Scott。當您使用常規的HTML表單進行測試時,如果沒有屏幕上的鍵盤,您的建議可以很好地工作。看來我正在實現的jquery mobile或我正在使用的鍵盤對象正在創建他們自己的焦點事件,我還沒有找到('焦點'是名稱空間在庫中某處)。就目前而言,我們的客戶喜歡這個想法,但軟鍵盤一直在彈出的事實已經關閉,所以我們正在放棄這個功能。 :( 我感興趣的工作,所以如果有人有興趣,這裏是鍵盤庫: https://github.com/Mottie/Keyboard – crodica

+4

只是一個想法 - 如果你把一個透明的div會發生什麼在每個輸入,然後使用的onClick方法例如:'

Text:
'父div的相對(或絕對的)定位導致絕對定位的孩子是相對於其父 –

36

斯科特S的答案完美無缺。

我正在爲移動設備編寫基於網絡的電話撥號盤,每當用戶按鍵盤上的數字(由表格中的td span元素組成)時,軟鍵盤就會彈出。我還希望用戶不能進入撥打號碼的輸入框。這實際上解決了一槍中的兩個問題。下面使用:

<input type="text" id="phone-number" onfocus="blur();" /> 
+1

其實,這個答案爲我工作好。 (@ScottS)的答案,並不尊重他的回答,我懷疑html輸入語句和$(document).ready()之間經過的時間允許鍵盤觸發,而onfocus = blur();會是至少在我的腦海中,速度更快,並且防止鍵盤開火, – HumbleBeginnings

10

如需進一步閱讀器/搜索:

由於Rene Potthis topic指出,

通過設置輸入字段readonly="true"你應該避免 任何人輸入任何東西它,但仍然能夠啓動一個點擊 事件就可以了。

使用此方法,您可以避免彈出「軟」鍵盤並仍然啓動點擊事件/通過任何屏幕鍵盤填充輸入。

該解決方案也適用於通常已經實現控件的日期選擇器。

0

示例我是如何做到的,在填充最大長度後,它將模糊我的 字段(並且鍵盤將消失),如果您有多個字段,則可以添加我添加的行'/ /'

var MaxLength = 8; 
    $(document).ready(function() { 
     $('#MyTB').keyup(function() { 
      if ($(this).val().length >= MaxLength) { 
       $('#MyTB').blur(); 
      // $('#MyTB2').focus(); 
     } 
      }); });