2017-09-15 63 views
3

我有一個應用程序,用戶必須在數字類型文本框中輸入最少15位數字。HTML5輸入類型號碼重新格式化長號碼

如果用戶輸入一個較長的數字,有時候> = 19位數,然後使用右邊的箭頭或鍵盤上的箭頭鍵,它將數字自動設置爲一個浮點數,最後顯示爲e+,顯然,並不理想。

<input min="0" type="number" value="7897894561234567898">

什麼是要麼刪除或抵消這種行爲的最好方法?有什麼要做,或者我將不得不使用文本類型的輸入? (我寧願不)。

+0

我看到了'E +'在Chrome,但在FF我甚至無法使用箭頭更改數量,這也FF轉換成'7897894561234570000' – j08691

+0

你真的需要上/下箭頭? –

+0

@Josh Lee,不,但是當用戶按下鍵盤上的上/下箭頭時也會發生 –

回答

1

HTML5 <input type=number>明確使用與JavaScript相同的Number類型。 maximum integer value before precision is lost是9007199254740991,它有16位數字。

你不能處理比​​JavaScript更大的整數,你必須把它看作一個字符串。

對於觸摸屏,您應該使用<input type=text>以及pattern屬性進行驗證,並使用inputmode屬性。默認的驗證消息沒有用,所以還應該處理'invalid'事件。

(開個玩笑,inputmode不被任何支持。您應該使用<input type=tel>顯示在觸摸屏設備數字鍵盤。)

<form> 
 
    <input name=num type=tel 
 
     required pattern="\d+" 
 
     oninvalid="setCustomValidity('A number is required')" 
 
     oninput="setCustomValidity('')"> 
 
    <input type=submit> 
 
</form>

有大約信貸規範中的一個音符卡號:

type=number狀態不適用於輸入h只能由數字組成,但不嚴格地說是數字。例如,對於信用卡號碼或美國郵政編碼來說是不合適的。確定是否使用type = number的一個簡單方法是考慮輸入控件是否具有spinbox接口(例如,帶有「向上」和「向下」箭頭)。

參見:https://html.spec.whatwg.org/multipage/input.html#number-state-(type=number)