久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

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

這篇文章不會去討論簡單的input type,本文想把重點放在HTML5表單驗證機制上。主要介紹是HTML5是如何利用約束驗證API來檢查表單的輸入數(shù)據(jù)的,當(dāng)然,本文會涉及到很多其它的知識。

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

原生驗證

input type

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

<input type='email'/>

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

比如在chrome下:

注意:

1、僅當(dāng)你提交的時候會觸發(fā)瀏覽器的驗證

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

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

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

pattern

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

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

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

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

約束驗證API

默認提示信息

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

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

當(dāng)提交時,如果Input內(nèi)容為空,那么瀏覽器會提示‘請?zhí)顚懘俗侄?rsquo;,我們可以在控制臺把這句話打印出來:

var input = document.getElementById('input')
input.validationMessage // =>'請?zhí)顚懘俗侄?

如果想修改其中的內(nèi)容,可以調(diào)用setCustomValidity接口改變validationMessage的值

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

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

原理

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

約束驗證API的簡單實例

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

input.addEventListener('input', function () {
        if(this.value.length > 3){ // 判斷條件完全自定義
            input.setCustomValidity('格式不正確');
        }else {
            input.setCustomValidity('')
        }
 });
【網(wǎng)站聲明】本站除付費源碼經(jīng)過測試外,其他素材未做測試,不保證完整性,網(wǎng)站上部分源碼僅限學(xué)習(xí)交流,請勿用于商業(yè)用途。如損害你的權(quán)益請聯(lián)系客服QQ:2655101040 給予處理,謝謝支持。

相關(guān)文檔推薦

主站蜘蛛池模板: av片在线观看 | 在线观看视频亚洲 | 精品熟人一区二区三区四区 | 日韩毛片在线免费观看 | 日韩成人av在线 | 日本电影免费完整观看 | 国产91在线播放 | va精品 | 国产 亚洲 网红 主播 | 亚洲欧洲日韩精品 中文字幕 | 91福利在线观看视频 | 亚洲午夜av久久乱码 | 国产探花在线精品一区二区 | 久久网一区二区 | 黄色在线免费观看视频 | 蜜桃日韩 | 日韩播放| 久热久热| 蜜月va乱码一区二区三区 | 日韩精品三区 | 九热在线 | 嫩草黄色影院 | 国产在线一区二区三区 | 国产男女视频 | 日本欧美国产在线 | 国产在线观看不卡一区二区三区 | 一区二区三区日 | 欧美性生活免费 | 亚洲高清成人 | 日韩免费一区 | 国产精品国产三级国产aⅴ原创 | 国产精品一区二区三区在线 | 色综合99 | 色噜噜亚洲男人的天堂 | 日韩欧美在线一区 | 国产成人一区二区三区电影 | 久久综合一区二区三区 | h在线看 | 中文字幕日韩一区二区 | 不卡一二区 | 在线观看黄免费 |