最近在做手機頁面時,遇到數字輸入的鍵盤的問題,之前的做法只是一刀切的使用 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中文網其他相關文章!

html5的div元素默认一行不可以放两个。div是一个块级元素,一个元素会独占一行,两个div默认无法在同一行显示;但可以通过给div元素添加“display:inline;”样式,将其转为行内元素,就可以实现多个div在同一行显示了。

html5中列表和表格的区别:1、表格主要是用于显示数据的,而列表主要是用于给数据进行布局;2、表格是使用table标签配合tr、td、th等标签进行定义的,列表是利用li标签配合ol、ul等标签进行定义的。

固定方法:1、使用header标签定义文档头部内容,并添加“position:fixed;top:0;”样式让其固定不动;2、使用footer标签定义尾部内容,并添加“position: fixed;bottom: 0;”样式让其固定不动。

html5中不支持的标签有:1、acronym,用于定义首字母缩写,可用abbr替代;2、basefont,可利用css样式替代;3、applet,可用object替代;4、dir,定义目录列表,可用ul替代;5、big,定义大号文本等等。

HTML5中画布标签是“<canvas>”。canvas标签用于图形的绘制,它只是一个矩形的图形容器,绘制图形必须通过脚本(通常是JavaScript)来完成;开发者可利用多种js方法来在canvas中绘制路径、盒、圆、字符以及添加图像等。

html5废弃了dir列表标签。dir标签被用来定义目录列表,一般和li标签配合使用,在dir标签对中通过li标签来设置列表项,语法“<dir><li>列表项值</li>...</dir>”。HTML5已经不支持dir,可使用ul标签取代。

3种取消方法:1、给td元素添加“border:none”无边框样式即可,语法“td{border:none}”。2、给td元素添加“border:0”样式,语法“td{border:0;}”,将td边框的宽度设置为0即可。3、给td元素添加“border:transparent”样式,语法“td{border:transparent;}”,将td边框的颜色设置为透明即可。

因为html5不基于SGML(标准通用置标语言),不需要对DTD进行引用,但是需要doctype来规范浏览器的行为,也即按照正常的方式来运行,因此html5只需要写doctype即可。“!DOCTYPE”是一种标准通用标记语言的文档类型声明,用于告诉浏览器编写页面所用的标记的版本。


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

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

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

Atom編輯器mac版下載
最受歡迎的的開源編輯器

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

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),