最近在做手機頁面時,遇到數字輸入的鍵盤的問題,之前的做法只是一刀切的使用 type="tel",不過一直覺得九宮格的電話號碼鍵盤上的英文字母太礙事了。於是想要嘗試其它的實作方案,最終的結論卻令人沮喪。不過也趁機詳細了解下pattern這個屬性。
type="tel" 和 type="number" 的差別
這裡還是先交代一下最初遇到的問題。其實無論是tel或number都不是完美的:
type="tel"
優點是iOS和Android的鍵盤表現都差不多
缺點是那些字母好多餘,雖然我沒有強迫症但還是感覺怪怪的啊。
type="number"
優點是Android下實現的一個真正的數字鍵盤
缺點一:iOS下不是九宮格鍵盤,輸入不方便
缺點二:舊版Android(包含微信所用的X5核心)在輸入框後面會有超級雞肋的小尾巴,好在Android 4.4.4以後給去掉了。
不過對於缺點二,我們可以用webkit私有的偽元素給fix掉:
input[type=number]::-webkit-inner-spin-button, input[type=number]::-webkit-outer-spin-button { -webkit-appearance: none; appearance: none; margin: 0; }
pattern屬性
pattern用來驗證表單輸入的內容,通常HTML5的type屬性,例如email、tel、number、data類別、url等,已經自備了簡單的資料格式驗證功能了,加上pattern後,前端部分的驗證更加簡單高效了。
顯而易見,pattern的屬性值要用正規表示式。
實例
簡單的數字驗證
數字的驗證有兩個:
<input type="number" pattern="\d"> <input type="number" pattern="[0-9]*">
對表單驗證來說,這兩個正規的作用是一樣的,表現的話差異就很大:
iOS中,只有[0-9]*才可以調起九宮格數字鍵盤,\d 無效
Android 4.4以下(包括X5核心),兩者都調起數字鍵盤;
Android 4.4.4以上,只認type 屬性,也就是說,如果上面的程式碼將type="number" 改為type ="text" ,將調起全鍵盤而不會是九宮格數字鍵盤。
常用的正規表示式
pattern的用法都一樣,這裡不再囉嗦各種詳細寫法了,只是列出來一些常用的正則就好了:
信用卡[0-9]{13,16}
銀聯卡^62[0-5]\d{13,16}$
Visa: ^4[0-9]{ 12}(?:[0-9]{3})?$
萬事達:^5[1-5][0-9]{14}$
QQ號碼: [ 1-9][0-9]{4,14}
手機號碼:^(13[0-9]|14[5|7]|15[0|1|2|3|5 |6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$
身分證:^([0 -9]){7,18}(x|X)?$
#密碼:^[a-zA-Z]\w{5,17}$ 字母開頭,長度在6~18之間,只能包含字母、數字和底線
強密碼:^(?=.\d)(?=.[a-z])(?=.*[A-Z]).{8,10}$包含大小寫字母和數字的組合,不能使用特殊字元,長度在8-10之間
7個漢字或14個字元:^[\u4e00-\u9fa5]{ 1,7}$|^[\dA-Za-z_]{1,14}$
#很不幸,pattern的瀏覽器支援很慘: via Can I Use
#但是如果只是如文章開頭提到的改數字鍵盤的話,iOS和Android都是沒有問題的。
以上是HTML5中pattern屬性的用法詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

H5(HTML5)將通過新元素和API提升網頁內容和設計。 1)H5增強了語義化標記和多媒體支持。 2)它引入了Canvas和SVG,豐富了網頁設計。 3)H5的工作原理是通過新標籤和API擴展HTML功能。 4)基本用法包括使用創建圖形,高級用法涉及WebStorageAPI。 5)開發者需注意瀏覽器兼容性和性能優化。

H5帶來了多項新功能和能力,極大提升了網頁的互動性和開發效率。 1.語義化標籤如、增強了SEO。 2.多媒體支持通過和標籤簡化了音視頻播放。 3.Canvas繪圖提供了動態圖形繪製工具。 4.本地存儲通過localStorage和sessionStorage簡化了數據存儲。 5.地理位置API便於開發基於位置的服務。

HTML5帶來了五個關鍵改進:1.語義化標籤提升了代碼清晰度和SEO效果;2.多媒體支持簡化了視頻和音頻嵌入;3.表單增強簡化了驗證;4.離線與本地存儲提高了用戶體驗;5.畫布與圖形功能增強了網頁的可視化效果。

HTML5的核心特性包括語義化標籤、多媒體支持、離線存儲與本地存儲、表單增強。 1.語義化標籤如、等,提升代碼可讀性和SEO效果。 2.和標籤簡化多媒體嵌入。 3.離線存儲和本地存儲如ApplicationCache和LocalStorage,支持無網絡運行和數據存儲。 4.表單增強引入新輸入類型和驗證屬性,簡化處理和驗證。

H5提供了多種新特性和功能,極大地增強了前端開發的能力。 1.多媒體支持:通過和元素嵌入媒體,無需插件。 2.畫布(Canvas):使用元素動態渲染2D圖形和動畫。 3.本地存儲:通過localStorage和sessionStorage實現數據持久化存儲,提升用戶體驗。

H5和HTML5是不同的概念:HTML5是HTML的一個版本,包含新元素和API;H5是基於HTML5的移動應用開發框架。 HTML5通過瀏覽器解析和渲染代碼,H5應用則需要容器運行並通過JavaScript與原生代碼交互。

HTML5的關鍵元素包括、、、、、等,用於構建現代網頁。 1.定義頭部內容,2.用於導航鏈接,3.表示獨立文章內容,4.組織頁面內容,5.展示側邊欄內容,6.定義頁腳,這些元素增強了網頁的結構和功能性。

HTML5和H5沒有區別,H5是HTML5的簡稱。 1.HTML5是HTML的第五個版本,增強了網頁的多媒體和交互功能。 2.H5常用於指代基於HTML5的移動網頁或應用,適用於各種移動設備。


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

SublimeText3漢化版
中文版,非常好用

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

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

Dreamweaver CS6
視覺化網頁開發工具

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。