婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > HTML5利用約束驗證API來檢查表單的輸入數據的代碼實例

HTML5利用約束驗證API來檢查表單的輸入數據的代碼實例

熱門標簽:聯通400電話申請 西寧智能外呼系統加盟 百應電銷機器人產業 高德地圖標注賓館位置 貸款電銷人工和機器人哪個好 飛亞外呼系統 杭州營銷電銷機器人供應商 電話機器人如何 電視購物電銷外呼系統

HTML5對于表單有著極大程度的優化,無論是語義,小部件,還是數據格式的驗證。我猜你肯定會以瀏覽器兼容作為借口不愿意使用這些“新功能”,但這絕不應該成為使你停滯不前的原因,況且還有像Modernizr和ployfill這樣的工具庫幫助你在不支持Html5的瀏覽器上進行回退處理。當你真正試著使用這些表單的新功能時,我保證你會愛上它。如果說唯一的缺陷,就是提示框的樣式是瀏覽器默認的,你無法改變,好吧,如果你相信瀏覽器廠商的設計師的審美水平的話(我相信他們的設計水平比絕大部分普通人要好,如果不考慮風格兼容的話),抓緊學就對了!

原生驗證

input type

HTML5中為數據格式驗證提供了很多原生的支持,例如:

<input type='email'/>

當點擊提交按鈕時,如果你輸入的格式不符合email,則會導致無法提交,瀏覽器會提示你錯誤信息。

比如在chrome下:

注意:

1、僅當你提交的時候會觸發瀏覽器的驗證

2、不同瀏覽器提示信息的行為樣式不一樣

3、當有多個input不符合要求時,只會提示一個錯誤,一般會提示表單中相對較前的Input的

不要理所應當的認為當input的type等于tel的時候,如果你輸入的不是電話號碼格式,在提交時也會被瀏覽器的阻擋并提示錯誤信息,type=’tel’在PC端只起到語義的作用,在移動端可以使產生的鍵盤為純數字鍵盤,并不能起到數據驗證的作用。

pattern

你可以使用pattern屬性來對瀏覽器不提供原生驗證的數據格式設置自定義格式驗證。pattern屬性的值是一個正則表達式(字符串):

<input type='tel' pattern='[0-9]{11}' title='請輸入11位電話號碼'>

點擊提交時,如果你輸入的數據不符合pattern里面正則的格式,那么瀏覽器會阻止表單提交,并提示:‘請與所請求的格式保持一致’+ title里的內容(小字)。但注意,當你的文本框中內容為空的時候,瀏覽器不會對其進行檢查,會直接提交表單(因為瀏覽器認為這個框框不是必填項)。如果你想要這個框框必須有內容,請加上required屬性。

通過HTML原生的驗證系統,基本就能滿足我們對表單提交的限定。但HTML5提供了更高級的功能來方便我們開發和提升用戶體驗。

約束驗證API

默認提示信息

像‘請與所請求的格式保持一致’這樣的瀏覽器提示信息字串藏在input DOM對象的validationMessage屬性里,這個屬性在大多數現代的瀏覽器中是只讀的,即不可修改,比如下面的代碼:

<input type="text" required id='input'/>

當提交時,如果Input內容為空,那么瀏覽器會提示‘請填寫此字段’,我們可以在控制臺把這句話打印出來:

var input = document.getElementById('input')
input.validationMessage // =>'請填寫此字段'

如果想修改其中的內容,可以調用setCustomValidity接口改變validationMessage的值

input.setCustomValidity('這個字段必須填上哦');
// 下面這種做法適用于不支持setCustomValidity的瀏覽器,基本現代瀏覽器都不支持這樣做
input.validationMessage = '這個字段必須填上哦'

注意,像required這樣的HTML原生驗證,雖然能改變其中信息,但無法把信息置為空字串,原因下面會講到。

原理

HTML表單驗證系統通過validationMessage屬性檢測該文本框的數據是否通過驗證,如果其值為空字串,則表示通過了驗證,否則,表示未通過,瀏覽器會把其值作為錯誤信息提示給用戶。所以在原生驗證時,用戶無法把validationMessage的值設置為空字符串。

約束驗證API的簡單實例

約束驗證API是在原生方法之上更靈活的表達方式,你可以自己設置數據是否通過,而不借助于正則表達式。原理很簡單,通過if判斷,如果數據格式使你滿意,那么你就調用setCustomValidity使validationMessage的值為空,否則,你就調用setCustomValidity傳入錯誤信息:

input.addEventListener('input', function () {
        if(this.value.length > 3){ // 判斷條件完全自定義
            input.setCustomValidity('格式不正確');
        }else {
            input.setCustomValidity('')
        }
 });

每次鍵盤輸入,代碼都會判斷格式是否正確,然后調用setCustomValidity設置validationMessage的值。不要妄想每按下鍵瀏覽器都會提示你結果是否正確,瀏覽器只有在點擊提交按鈕的時候才會提示validationMessage里的值(如果有的話)。

如果你還沒有走思的話,一定會問,既然這樣,為什么要為input綁定鍵盤事件,每輸入一下都要進行判斷呢?直接為表單綁定提交事件,在提交時再判斷多好,別急,這么做是有好處的。

隨著輸入判斷格式與樣式

作為用戶,我們當然想在得知我輸入了錯誤的格式之后,文本框變紅(或者有別的提示)。而在我每次輸入一個字符,如果對了,文本框就恢復正常。我們可以使用CSS偽類來實現這個功能:

    input:required {
            background-color: #FFE14D;
        }

    /*這個偽類通過validationMessage屬性進行判斷*/
    input:invalid {
        border: 2px solid red;
    }

上面的required偽類會給所以必填但值空的input提供一個黃色的背景色,而下面的invalid偽類則會為所有未通過驗證的input添加一個2px的紅邊邊。我們現在給我們的Input框加上input類即可。

這些偽類的判斷條件正與瀏覽器判斷你能否提交表單的條件一樣,看validationMessage里的值,所以,我們上面設置每次鍵盤輸入事件都會觸發一次判斷從而改變CSS偽類樣式的渲染,用意正在于此。

更好的用戶體驗

還有一個缺點,就是當一個input設置為required的時候,在初始化時,因為其本身是空的,所以invalid偽類會對它起作用,這不是我們想看到的,因為我們什么還都沒有干。

我們可以并在這些偽類前加上父選擇器.invalid,這樣,只有在父元素具有invalid類時,這些偽類才會起作用。可以設置一個submit事件,在表單提交因驗證失敗后,會觸發input的invalid事件,給form添加invalid類:

form.addEventListener('invalid', function() {this.className = 'invalid'}, true)因為invaild是Input的事件,而不是form的事件,所以這里我們設置第三個參數為true采用事件捕獲的方式處理之。這樣,就大功告成了。

最終實例

好了,現在是時候總結一下我們所學的知識并創造最佳實踐了:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>form</title>
    <style>
        input:required{
            background-color: #DCD4CE;
        }
        .invalid input:invalid{
            border: 2px solid red;
        }
    </style>
</head>
<body>
<form id="form">
    <label>email:<input type="email" required id="email"></label>
    <label>IDCard:<input required id="IDCard"></label>
    <input type="submit" id="submit">
</form>
<script>
    var email = document.getElementById('email');
    var IDCard = document.getElementById('IDCard');
    var form = document.getElementById('form');

    IDCard.addEventListener('input', function () {
        if(this.value.length != 6) {
            this.setCustomValidity('IDCard的長度必須為6')
        }else{
            this.setCustomValidity('')
        }
    });

    form.addEventListener('invalid', function () {
        this.className = 'invalid';
    }, true)
</script>
</body>
</html>

運行后截圖如下:

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

標簽:內蒙古 玉溪 煙臺 牡丹江 晉中 邯鄲 安慶 撫州

巨人網絡通訊聲明:本文標題《HTML5利用約束驗證API來檢查表單的輸入數據的代碼實例》,本文關鍵詞  HTML5,利用,約束,驗證,API,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《HTML5利用約束驗證API來檢查表單的輸入數據的代碼實例》相關的同類信息!
  • 本頁收集關于HTML5利用約束驗證API來檢查表單的輸入數據的代碼實例的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    国产一区二区三区日韩| 美女在线一区二区| 精品国产123| 91精品久久久久久蜜臀| 欧美婷婷六月丁香综合色| 丁香五精品蜜臀久久久久99网站 | 欧美一区二区成人| 欧美蜜桃一区二区三区| 欧美视频一区二区三区| 欧美日产在线观看| 91精品在线麻豆| 欧美精品一区二区在线播放| 精品国产乱码久久久久久蜜臀| 欧美一区二区视频在线观看2020| 日韩欧美色电影| 国产日韩欧美一区二区三区综合 | 欧美日韩国产首页| 日韩一区二区高清| 亚洲精品一区二区精华| 国产欧美一区二区精品忘忧草| 国产精品系列在线| 一区二区三区成人在线视频| 亚洲国产人成综合网站| 韩国在线一区二区| 99久久久无码国产精品| 在线观看三级视频欧美| 欧美本精品男人aⅴ天堂| 国产精品国产三级国产专播品爱网 | 成人a免费在线看| 色欲综合视频天天天| 4438x亚洲最大成人网| 久久综合九色综合97_久久久| 国产区在线观看成人精品| 一区二区三区在线视频免费 | 欧美疯狂性受xxxxx喷水图片| 精品欧美一区二区久久| 亚洲丝袜另类动漫二区| 亚洲18女电影在线观看| 国产乱色国产精品免费视频| 一本一道久久a久久精品综合蜜臀 一本一道综合狠狠老 | 久久99热狠狠色一区二区| 成人亚洲精品久久久久软件| 欧美亚一区二区| 国产精品女同一区二区三区| 日韩电影一区二区三区四区| av电影一区二区| 精品国产精品一区二区夜夜嗨 | 日韩一区二区中文字幕| 亚洲图片激情小说| 国产精品1024| 精品区一区二区| 日韩成人免费电影| 色偷偷一区二区三区| 中文字幕欧美日韩一区| 日本不卡一二三区黄网| 欧美女孩性生活视频| 一区二区三区在线视频播放| 国产高清视频一区| 欧美精品一区视频| 久久精品国产一区二区| 91精品国产综合久久精品性色| 综合欧美亚洲日本| 91农村精品一区二区在线| 日本一区二区三区久久久久久久久不 | 国产精品一二三四五| 日韩欧美中文字幕公布| 奇米精品一区二区三区四区 | av在线综合网| 国产精品免费av| 成人午夜碰碰视频| 国产欧美综合色| 粉嫩一区二区三区在线看| 久久久久久毛片| 国产乱人伦精品一区二区在线观看| 日韩三级视频中文字幕| 久久精品国产久精国产| 精品av综合导航| 精品一区二区三区免费| 国产网红主播福利一区二区| 国产麻豆日韩欧美久久| 国产精品欧美精品| 在线视频你懂得一区| 亚洲午夜久久久| 欧美一卡二卡三卡| 激情综合一区二区三区| 国产亚洲一区二区三区四区| 国产成人综合亚洲91猫咪| 国产精品污污网站在线观看| 不卡的av电影| 亚洲成人一区二区| 91精品国产综合久久婷婷香蕉| 蜜桃精品视频在线| 国产午夜精品一区二区三区嫩草| 成人永久看片免费视频天堂| 一区二区三区四区五区视频在线观看 | 五月天久久比比资源色| 91精品国产麻豆| 成人午夜激情片| 亚洲国产综合色| 亚洲精品一区二区三区蜜桃下载| 成人丝袜高跟foot| 午夜精品久久久久| 精品国一区二区三区| 色综合一区二区三区| 美女视频黄免费的久久| 中文字幕在线免费不卡| 欧美日韩精品欧美日韩精品一综合| 美女精品一区二区| 亚洲精选在线视频| 欧美精品一区二区三区四区| 岛国精品一区二区| 天堂一区二区在线免费观看| 国产亚洲制服色| 日韩一区二区三区电影在线观看| 国产伦精品一区二区三区视频青涩| 亚洲欧洲精品一区二区三区不卡 | 北条麻妃国产九九精品视频| 亚洲gay无套男同| 亚洲色图第一区| 久久久久国产精品人| 欧美日韩在线播| 91年精品国产| 成人动漫精品一区二区| 激情图片小说一区| 婷婷开心久久网| 亚洲天堂网中文字| 日本一区二区三区dvd视频在线| 欧美性极品少妇| 色婷婷av一区二区三区软件 | 91麻豆123| 成人一区二区三区中文字幕| 美国毛片一区二区三区| 日韩不卡在线观看日韩不卡视频| 亚洲欧美日韩中文播放| 久久久久97国产精华液好用吗| 日韩欧美国产一区二区在线播放| 91视视频在线观看入口直接观看www| 激情综合网av| 久久精品国产亚洲a| 蜜臀av一区二区在线免费观看| 亚洲香蕉伊在人在线观| 一区二区三区在线观看国产| 国产精品第四页| 中文字幕欧美日韩一区| 国产精品丝袜一区| 国产精品区一区二区三| 国产精品久久久久影院| 国产午夜精品久久久久久久| 久久精品视频一区| 亚洲欧洲色图综合| 1024精品合集| 有坂深雪av一区二区精品| 亚洲欧美乱综合| 亚洲午夜日本在线观看| 日韩电影在线免费观看| 天堂成人免费av电影一区| 免费欧美日韩国产三级电影| 天堂va蜜桃一区二区三区漫画版 | 成人久久视频在线观看| 99视频在线精品| 99久久精品国产导航| 91蝌蚪porny九色| 欧美主播一区二区三区美女| 91精品办公室少妇高潮对白| 欧美综合在线视频| 精品国产三级电影在线观看| 亚洲国产精品精华液ab| 亚洲成人午夜电影| 蜜桃av一区二区在线观看| 国产传媒日韩欧美成人| 日本道免费精品一区二区三区| 在线观看日韩av先锋影音电影院| 欧洲av在线精品| 欧美精品一区二区三区在线| 国产欧美一区二区精品忘忧草| 亚洲精品免费播放| 久久精品国产澳门| 成人av资源站| 欧美精品一卡两卡| 国产欧美日韩综合| 日欧美一区二区| 丁香婷婷深情五月亚洲| 欧美午夜精品一区| 亚洲精品一区二区三区99| 亚洲柠檬福利资源导航| 韩国成人福利片在线播放| 一本大道久久精品懂色aⅴ| 欧美精品三级在线观看| 国产精品午夜在线观看| 水蜜桃久久夜色精品一区的特点| 国产成人一级电影| 在线不卡欧美精品一区二区三区| 日本一区二区三区久久久久久久久不 | 日韩免费性生活视频播放| 亚洲日本丝袜连裤袜办公室| 美女高潮久久久| 欧美猛男超大videosgay| 国产精品九色蝌蚪自拍| 国产麻豆欧美日韩一区| 欧美一卡二卡在线观看|