前端的童鞋在寫頁面時, 都不可避免的總會踩到表單驗證
這個坑. 這時候, 咱們就要跪了, 由於要寫一堆js
來檢查. 可是自從H5
出現後, 不少常見的表達驗證
, 它都已經幫咱們實現了, 讓咱們減輕了不少負擔, 就好像下面的:html
郵箱地址驗證:前端
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Test</title> </head> <body> <form action=""> <label > 郵箱: <input type="email"> </label> <input type="submit"> </form> </body> </html>
郵箱驗證是H5
自身支持的, 可是咱們要驗證的場景和狀況是多種多樣的, 那該怎麼辦? 用回Js
嗎? 很明顯沒這麼蛋疼, 由於H5
提供了pattern
屬性, 讓咱們自食其力! 咱們能夠在pattern
指定正則表達式, 只要正則寫的好, 驗證就沒煩惱!正則表達式
正則限定11位數字:編程
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Test</title> </head> <body> <form action=""> <label > 數字: <input type="text" pattern="^\d{11}$"> </label> <input type="submit"> </form> </body> </html>
你們能夠嘗試下, 在輸入非11位的數字, 都會報錯, 這就是pattern
的功勞. 可是不知道你們發現了一個蛋疼的現象沒? 就是若是我們使用pattern
的方式去驗證表單, 在驗證失敗時, 它的提示都是請與所請求的格式保持一致
, 個人天, 咱們的用戶怎麼知道所請求的格式是什麼鬼, 總不能讓他們去看源碼吧, 要真這樣, 咱們連頁面都不用寫了, 直接讓他們把錢給咱們得了, 開個玩笑~segmentfault
有問題, 我們就得解決, 在面向谷歌編程許久, 終於覓得一良方:spa
oninvalid:提交的input元素的值爲無效值時(這裏是正則驗證失敗),觸發
oninvalid事件。oninvalid屬於Form 事件。code
setCustomValidity():這個是HTML5內置的JS方法,用來自定義提示信息orm
原來能夠經過oninvalid
和setCustomValidity
來自定義提示, 那這就好辦了, 修改源代碼以下:htm
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Test</title> </head> <body> <form action=""> <label > 數字: <input type="text" pattern="^\d{11}$" oninvalid="setCustomValidity('請輸入11位數字')"> </label> <input type="submit"> </form> </body> </html>
結果:blog
終於不是那個蛋疼的"格式"了, 如今表單驗證提示已經很明確的告訴咱們, 這裏應該輸入的是什麼樣的數據, 這樣用戶就能更好的修改本身的輸入了!
歡迎各位大神指點交流,轉載請註明來源: https://segmentfault.com/a/11...