H5: 表單驗證失敗的提示語


前言

    前端的童鞋在寫頁面時, 都不可避免的總會踩到表單驗證這個坑. 這時候, 我們就要跪了, 因為要寫一堆js來檢查. 但是自從H5出現后, 很多常見的表達驗證, 它都已經幫我們實現了, 讓我們減輕了很多負擔, 就好像下面的:

郵箱地址驗證:

<!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>

clipboard.png

    郵箱驗證是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>

clipboard.png

問題

    大家可以嘗試下, 在輸入非11位的數字, 都會報錯, 這就是pattern的功勞. 但是不知道大家發現了一個蛋疼的現象沒? 就是如果咱們使用pattern的方式去驗證表單, 在驗證失敗時, 它的提示都是請與所請求的格式保持一致, 我的天, 我們的用戶怎么知道所請求的格式是什么鬼, 總不能讓他們去看源碼吧, 要真這樣, 我們連頁面都不用寫了, 直接讓他們把錢給我們得了, 開個玩笑~

解決方案

有問題, 咱們就得解決, 在面向谷歌編程許久, 終於覓得一良方:

  • oninvalid:提交的input元素的值為無效值時(這里是正則驗證失敗),觸發
    oninvalid事件。oninvalid屬於Form 事件。

  • setCustomValidity():這個是HTML5內置的JS方法,用來自定義提示信息

原來可以通過oninvalidsetCustomValidity來自定義提示, 那這就好辦了, 修改源代碼如下:

<!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>

結果:

clipboard.png

    終於不是那個蛋疼的"格式"了, 現在表單驗證提示已經很明確的告訴我們, 這里應該輸入的是什么樣的數據, 這樣用戶就能更好的修改自己的輸入了!

歡迎各位大神指點交流,轉載請注明來源: https://segmentfault.com/a/11...

本文轉載於:猿2048H5: 表單驗證失敗的提示語


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM