什麼是
根據 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

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

10款趣味橫生的jQuery遊戲插件,讓您的網站更具吸引力,提升用戶粘性!雖然Flash仍然是開發休閒網頁遊戲的最佳軟件,但jQuery也能創造出令人驚喜的效果,雖然無法與純動作Flash遊戲媲美,但在某些情況下,您也能在瀏覽器中獲得意想不到的樂趣。 jQuery井字棋遊戲 遊戲編程的“Hello world”,現在有了jQuery版本。 源碼 jQuery瘋狂填詞遊戲 這是一個填空遊戲,由於不知道單詞的上下文,可能會產生一些古怪的結果。 源碼 jQuery掃雷遊戲

本教程演示瞭如何使用jQuery創建迷人的視差背景效果。 我們將構建一個帶有分層圖像的標題橫幅,從而創造出令人驚嘆的視覺深度。 更新的插件可與JQuery 1.6.4及更高版本一起使用。 下載

本文討論了在瀏覽器中優化JavaScript性能的策略,重點是減少執行時間並最大程度地減少對頁面負載速度的影響。

本文演示瞭如何使用jQuery和ajax自動每5秒自動刷新DIV的內容。 該示例從RSS提要中獲取並顯示了最新的博客文章以及最後的刷新時間戳。 加載圖像是選擇

Matter.js是一個用JavaScript編寫的2D剛體物理引擎。此庫可以幫助您輕鬆地在瀏覽器中模擬2D物理。它提供了許多功能,例如創建剛體並為其分配質量、面積或密度等物理屬性的能力。您還可以模擬不同類型的碰撞和力,例如重力摩擦力。 Matter.js支持所有主流瀏覽器。此外,它也適用於移動設備,因為它可以檢測觸摸並具有響應能力。所有這些功能都使其值得您投入時間學習如何使用該引擎,因為這樣您就可以輕鬆創建基於物理的2D遊戲或模擬。在本教程中,我將介紹此庫的基礎知識,包括其安裝和用法,並提供一


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

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

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

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

禪工作室 13.0.1
強大的PHP整合開發環境