什麼是
根據 MDN 文件定義: number 類型的元素用於讓使用者輸入數字。它們包括內建驗證以拒絕非數位條目。
所以基本上,它是一個增強我們蹩腳網站和網路應用程式使用者體驗的功能。雖然它是一個簡化數位輸入的好功能,但它有一些行為一開始可能並不明顯,但身為 Web 開發人員我們應該要意識到這一點。
這些行為與:
- 虛擬鍵盤
- 科學記數法
虛擬鍵盤
虛擬鍵盤是出現在螢幕上的鍵盤,通常出現在手機、平板電腦/ipad 等觸控輸入裝置和一些輔助技術中。
<input id="numeric-input" type="number">
只使用 type="number" 乍看之下似乎沒問題,但在使用虛擬鍵盤時就會出現問題。它可能會打開全鍵鍵盤而不是數字鍵盤,這會損害使用者體驗和輸入準確性。
`" />
解法輸入方式
雖然在較新的作業系統和瀏覽器版本上可能不會出現虛擬鍵盤問題,但使用inputmode 屬性仍然是一個好主意,因為它暗示用戶在編輯元素或其元素時可能輸入的資料類型內容。
這允許瀏覽器為所有版本和裝置顯示適當的虛擬鍵盤,從而改善應用程式的整體使用者體驗 (UX)。
inputmode 可以有許多值,但對於我們使用數位輸入的用例,我們應該使用以下兩個值之一:
1.數字
<input id="numeric-input" type="number" inputmode="numeric">
輸入型數接受任何有理值。如果您不接受小數值而只接受整數,則在這種情況下應首選使用數值。
2.十進位
<input id="numeric-input" type="number" inputmode="decimal">
如果您接受小數,請使用十進制值,因為它將顯示一個虛擬鍵盤,其中包含使用者區域設定的數字和小數分隔符號。
總是喜歡在輸入中使用小數值,除非您不接受小數值。
`" />
科學記數法
我們中的許多人可能已經忘記或不知道 e 或 E 是科學計數法中的有效數值。
`" />
是的,e或E在科學計數法中表示「十的指數」,用來表示非常大或非常小的值。例如
1e5 = 100000 or 1e-5 = 0.00001
HTML 輸入類型數字的設計考慮到了靈活性,並且它支援這種科學記數法,允許輸入指數(例如 1e5)。雖然這本身不是問題,並且在某些情況下很有用,但當輸入僅包含基本數字時,它可能會出現問題。
有兩種方法可以限制輸入只能輸入數字且不允許輸入科學計數法。
- 使用正規表示式?圖案。
- 使用 Javascript(我的首選方法)。
使用 Javascript 防止預設行為
在大多數情況下,我不希望使用者輸入「e」或「E」符號,因為不需要它們,並且允許它們可能會導致一些意外的問題。
實現此目的的方法有很多,但我最喜歡的方法是防止「e」或「E」鍵被註冊。我們可以使用 keydown 事件和 PreventDefault 來實現這一點。
element.addEventListener("keydown", (e) => { if (["e", "E"].includes(e.key)) { // you can also add "+" and "-" if you want to prevent them from being registered. e.preventDefault(); } });
我特別喜歡這個方法,因為三個原因:
- 它向稍後閱讀我們程式碼的任何人提供了一個明確的訊息,即我們不想註冊 e 或 E 鍵。
- 它還可以提供更好的使用者體驗,因為我們沒有註冊金鑰本身,而是更改值。
- keydown 事件的類型是 KeyboardEvent,它使我們能夠直接存取關鍵值,從而提高解決方案的整體 DX。
並非所有數字輸入都需要是輸入類型數字
有時,如果我們看到接受數字輸入的輸入要求,我們可以本能地找到輸入類型數字,但有時輸入類型數字並不是此類場景的正確解決方案。
此類場景的一些例子是:
信用卡/金融卡:當我們有信用卡/金融卡的輸入字段時,最好不要使用輸入類型數字,而是使用輸入類型文本,輸入模式為數字並且使用您首選的方法進行驗證,因為信用卡可以有前導零值,而某些瀏覽器可能不允許這樣做,我們也可能想要添加一些卡特定的驗證或允許一組四個數字之間的空格(因為它印在卡片上) )。
郵遞區號:雖然大多數國家都有數位郵遞區號,但加拿大等一些國家可能有字母數字代碼,重要的是根據您的需求使用解決方案,它可以是輸入類型數字或輸入類型文字。
手機號碼:您應該始終使用 input="tel" 的輸入類型以及適合您的用例的正規表示式模式。
結論
由於現代HTML 提供了一些非常好的實用程序,有些事情可能感覺實現起來非常簡單,例如輸入類型數字,但是作為開發人員,我們應該始終關注這些實用程序以及如何利用它們來創建更好的使用者體驗。
如果您喜歡這篇文章,請發表評論,如果您不喜歡某些內容,可以在評論中留下您的回饋。
我喜歡與人們聯繫並談論科技及其相關事件。您可以在 Twitter/X 和 LinkedIn 上與我聯絡。
您也可以在 Dev.to 上關注我,以便在我發布新文章時收到通知。
以上是超越基礎:使用 `` 像專業人士一樣處理數位輸入的詳細內容。更多資訊請關注PHP中文網其他相關文章!

JavaScript字符串替換方法詳解及常見問題解答 本文將探討兩種在JavaScript中替換字符串字符的方法:在JavaScript代碼內部替換和在網頁HTML內部替換。 在JavaScript代碼內部替換字符串 最直接的方法是使用replace()方法: str = str.replace("find","replace"); 該方法僅替換第一個匹配項。要替換所有匹配項,需使用正則表達式並添加全局標誌g: str = str.replace(/fi

本教程向您展示瞭如何將自定義的Google搜索API集成到您的博客或網站中,提供了比標準WordPress主題搜索功能更精緻的搜索體驗。 令人驚訝的是簡單!您將能夠將搜索限制為Y

因此,在這裡,您準備好了解所有稱為Ajax的東西。但是,到底是什麼? AJAX一詞是指用於創建動態,交互式Web內容的一系列寬鬆的技術。 Ajax一詞,最初由Jesse J創造

本文系列在2017年中期進行了最新信息和新示例。 在此JSON示例中,我們將研究如何使用JSON格式將簡單值存儲在文件中。 使用鍵值對符號,我們可以存儲任何類型的

利用輕鬆的網頁佈局:8 ESTISSEL插件jQuery大大簡化了網頁佈局。 本文重點介紹了簡化該過程的八個功能強大的JQuery插件,對於手動網站創建特別有用

核心要點 JavaScript 中的 this 通常指代“擁有”該方法的對象,但具體取決於函數的調用方式。 沒有當前對象時,this 指代全局對象。在 Web 瀏覽器中,它由 window 表示。 調用函數時,this 保持全局對象;但調用對象構造函數或其任何方法時,this 指代對象的實例。 可以使用 call()、apply() 和 bind() 等方法更改 this 的上下文。這些方法使用給定的 this 值和參數調用函數。 JavaScript 是一門優秀的編程語言。幾年前,這句話可

jQuery是一個很棒的JavaScript框架。但是,與任何圖書館一樣,有時有必要在引擎蓋下發現發生了什麼。也許是因為您正在追踪一個錯誤,或者只是對jQuery如何實現特定UI感到好奇

該帖子編寫了有用的作弊表,參考指南,快速食譜以及用於Android,BlackBerry和iPhone應用程序開發的代碼片段。 沒有開發人員應該沒有他們! 觸摸手勢參考指南(PDF)是Desig的寶貴資源


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

Dreamweaver Mac版
視覺化網頁開發工具

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

記事本++7.3.1
好用且免費的程式碼編輯器