2013-04-15 48 views
3

用於輸入美元貨幣值的最佳iOS鍵盤(如下所示)包括數字0-9,小數點符號,逗號符號和美元符號。據我所知,得到移動Safari上的這個鍵盤的唯一方法是使用<input type="number">在類型編號的輸入中使用貨幣符號和逗號

不幸的是,iOS目前內置了number輸入類型的驗證功能,可以屏蔽逗號和美元符號。由於此驗證「功能」嵌入在瀏覽器中,且Mobile Safari尚未實施novalidate指令,因此目前無法手動執行此驗證。

使用<input type="text">顯然會解決驗證問題,但它也會帶來常規的阿爾法鍵盤,這是我目前的項目(金融計算器)所不能接受的。

我在做一些瘋狂的邊緣,就像使用JavaScript快速從numbertype切換到textinput接收焦點後。我在這裏抓着稻草。有任何想法嗎?

enter image description here

回答

1

現在,JavaScript是唯一的解決方案。下面是做到這一點的最簡單方法(使用jQuery):

HTML

<input type="text"> 

的JavaScript

$('input[type="text"]').on('touchstart', function() { 
    $(this).attr('type', 'number'); 
}); 

$('input[type="text"]').on('keydown blur', function() { 
    $(this).attr('type', 'text'); 
}); 

的想法很簡單。輸入開始並以type="text"結束,但在touchstart事件中它簡要變爲type="number"。這會導致出現正確的iOS鍵盤。只要用戶開始輸入任何輸入或離開現場,輸入就會再次變爲type="text",從而繞過驗證。

這種方法有一個缺點。當用戶返回到已被填寫的輸入時,輸入將會丟失(如果它沒有驗證)。這意味着用戶將無法返回並編輯以前的字段。在我的情況下,這並不是那麼糟糕,因爲用戶可能希望一次又一次地使用不同的值來使用計算器,所以自動刪除輸入將爲他們節省幾個步驟。但是,這在所有情況下可能都不理想。

0

可以使用屬性pattern您輸入字段爲文本。這指示移動Safari瀏覽器調出數字鍵盤。嘗試一下:

<input type="text" pattern="\d*" /> 

只是改變你的模式正則表達式到你想要的。

這裏是more information on the pattern attribute

UPDATE 閱讀Apple's Documentation on managing Text in Webviews好像你的運氣了。你將不得不做一些JavaScript的魔術來做你想做的。

+0

是的,我知道'pattern'屬性。Apple的文檔特別提到了兩種模式,兩種模式都顯示數字鍵盤(幾乎與電話鍵盤相同)。數字鍵盤不是一個選項,因爲它甚至不包括小數(對於金融計算器是必需的)並且沒有用於顯示更多字符的機制。我不知道有任何其他支持的模式(我嘗試了幾個,但我在黑暗中拍攝)。 –

+0

我已經更新了答案。我嘗試了不同的模式,應該給你想要的,但移動Safari瀏覽器忽略它們,並呈現常規鍵盤。 – Ares