国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

首頁(yè) web前端 H5教程 HTML5利用約束驗(yàn)證API來(lái)檢查表單的輸入資料的程式碼實(shí)例

HTML5利用約束驗(yàn)證API來(lái)檢查表單的輸入資料的程式碼實(shí)例

May 14, 2018 pm 04:30 PM

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

<input type=&#39;email&#39;/>

當(dāng)點(diǎn)擊提交按鈕時(shí),如果你輸入的格式不符合email,會(huì)導(dǎo)致無(wú)法提交,瀏覽器會(huì)提示你錯(cuò)誤訊息。
例如在chrome下:
HTML5利用約束驗(yàn)證API來(lái)檢查表單的輸入資料的程式碼實(shí)例
注意:
1、僅當(dāng)你提交的時(shí)候會(huì)觸發(fā)瀏覽器的驗(yàn)證
2、不同瀏覽器提示訊息的行為樣式不一樣
3、當(dāng)有多個(gè)input不符合要求時(shí),只會(huì)提示一個(gè)錯(cuò)誤,一般會(huì)提示表單中相對(duì)較前的Input的
不要理所應(yīng)當(dāng)?shù)恼J(rèn)為當(dāng)input的type等於tel的時(shí)候,如果你輸入的不是電話號(hào)碼格式,在提交時(shí)也會(huì)被瀏覽器的阻擋並提示錯(cuò)誤訊息,type='tel'在PC端只起到語(yǔ)義的作用,在行動(dòng)端可以使產(chǎn)生的鍵盤為純數(shù)字鍵盤,並不能起到數(shù)據(jù)驗(yàn)證的作用。
pattern
你可以使用pattern屬性來(lái)對(duì)瀏覽器不提供原生驗(yàn)證的資料格式設(shè)定自訂格式驗(yàn)證。 pattern屬性的值是一個(gè)正規(guī)表示式(字串):

<input type=&#39;tel&#39; pattern=&#39;[0-9]{11}&#39; title=&#39;請(qǐng)輸入11位電話號(hào)碼&#39;>

點(diǎn)擊提交時(shí),如果你輸入的資料不符合pattern裡面正則的格式,那麼瀏覽器會(huì)阻止表單提交,並提示:'請(qǐng)與所要求的格式保持一致'+ title裡的內(nèi)容(小字)。但請(qǐng)注意,當(dāng)你的文字方塊中內(nèi)容為空的時(shí)候,瀏覽器不會(huì)對(duì)其進(jìn)行檢查,會(huì)直接提交表單(因?yàn)闉g覽器認(rèn)為這個(gè)框框不是必填項(xiàng))。如果你想要這個(gè)框框必須有內(nèi)容,請(qǐng)加上required屬性。
透過(guò)HTML原生的驗(yàn)證系統(tǒng),基本就能滿足我們對(duì)表單提交的限定。但HTML5提供了更進(jìn)階的功能來(lái)方便我們開發(fā)和提升使用者體驗(yàn)。
約束驗(yàn)證API
預(yù)設(shè)提示訊息
像'請(qǐng)與所要求的格式保持一致'這樣的瀏覽器提示訊息字串藏在input DOM物件的validationMessage屬性裡,這個(gè)屬性在大多數(shù)現(xiàn)代的瀏覽器中是唯讀的,即不可修改,例如下面的程式碼:

<input type="text" required id=&#39;input&#39;/>

當(dāng)提交時(shí),如果Input內(nèi)容為空,那麼瀏覽器會(huì)提示'請(qǐng)?zhí)顚懘藱谖?,我們可以在控制臺(tái)把這句話印出來(lái):

var input = document.getElementById(&#39;input&#39;)
input.validationMessage // =>&#39;請(qǐng)?zhí)顚懘俗侄?amp;#39;

如果想修改其中的內(nèi)容,可以呼叫setCustomValidity介面改變validationMessage的值

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

注意,像required這樣的HTML原生驗(yàn)證,雖然能改變其中信息,但無(wú)法把信息置為空字符串,原因下面會(huì)講到。
原理
HTML表單驗(yàn)證系統(tǒng)透過(guò)validationMessage屬性偵測(cè)該文字方塊的資料是否經(jīng)過(guò)驗(yàn)證,如果其值為空字符串,則表示通過(guò)了驗(yàn)證,否則,表示未通過(guò),瀏覽器會(huì)把其值作為錯(cuò)誤訊息提示給使用者。所以在原生驗(yàn)證時(shí),使用者無(wú)法把validationMessage的值設(shè)定為空字串。
約束驗(yàn)證API的簡(jiǎn)單實(shí)例
約束驗(yàn)證API是在原生方法之上更靈活的表達(dá)方式,你可以自己設(shè)定資料是否通過(guò),而不借助於正規(guī)表示式。原理很簡(jiǎn)單,透過(guò)if判斷,如果資料格式讓你滿意,那麼你就呼叫setCustomValidity使validationMessage的值為空,否則,你就呼叫setCustomValidity傳入錯(cuò)誤訊息:
##

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

每次鍵盤輸入,程式碼都會(huì)判斷格式是否正確,然後呼叫setCustomValidity設(shè)定validationMessage的值。不要妄想每按下鍵瀏覽器都會(huì)提示你結(jié)果是否正確,瀏覽器只有在點(diǎn)擊提交按鈕的時(shí)候才會(huì)提示validationMessage裡的值(如果有的話)。

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

隨著輸入判斷格式與樣式作為用戶,我們當(dāng)然想在得知我輸入了錯(cuò)誤的格式之後,文字方塊變紅(或有別的提示)。而在我每次輸入一個(gè)字符,如果對(duì)了,文字方塊就恢復(fù)正常。我們可以使用CSS偽類別來(lái)實(shí)作這個(gè)功能:

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

    /*這個(gè)偽類通過(guò)validationMessage屬性進(jìn)行判斷*/
    input:invalid {
        border: 2px solid red;
    }

上面的required偽類會(huì)給所以必填但值空的input提供一個(gè)黃色的背景色,而下面的invalid偽類則會(huì)為所有未通過(guò)驗(yàn)證的input添加一個(gè)2px的紅邊邊。我們現(xiàn)在給我們的Input框加上input類即可。
這些偽類的判斷條件正與瀏覽器判斷你能否提交表單的條件一樣,看validationMessage里的值,所以,我們上面設(shè)置每次鍵盤輸入事件都會(huì)觸發(fā)一次判斷從而改變CSS偽類樣式的渲染,用意正在于此。
更好的用戶體驗(yàn)
還有一個(gè)缺點(diǎn),就是當(dāng)一個(gè)input設(shè)置為required的時(shí)候,在初始化時(shí),因?yàn)槠浔旧硎强盏?,所以invalid偽類會(huì)對(duì)它起作用,這不是我們想看到的,因?yàn)槲覀兪裁催€都沒有干。
我們可以并在這些偽類前加上父選擇器.invalid,這樣,只有在父元素具有invalid類時(shí),這些偽類才會(huì)起作用??梢栽O(shè)置一個(gè)submit事件,在表單提交因驗(yàn)證失敗后,會(huì)觸發(fā)input的invalid事件,給form添加invalid類:
form.addEventListener('invalid', function() {this.className = 'invalid'}, true)因?yàn)閕nvaild是Input的事件,而不是form的事件,所以這里我們?cè)O(shè)置第三個(gè)參數(shù)為true采用事件捕獲的方式處理之。這樣,就大功告成了。
最終實(shí)例
好了,現(xiàn)在是時(shí)候總結(jié)一下我們所學(xué)的知識(shí)并創(chuàng)造最佳實(shí)踐了:

<!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(&#39;email&#39;);
    var IDCard = document.getElementById(&#39;IDCard&#39;);
    var form = document.getElementById(&#39;form&#39;);

    IDCard.addEventListener(&#39;input&#39;, function () {
        if(this.value.length != 6) {
            this.setCustomValidity(&#39;IDCard的長(zhǎng)度必須為6&#39;)
        }else{
            this.setCustomValidity(&#39;&#39;)
        }
    });

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

運(yùn)行后截圖如下:

HTML5利用約束驗(yàn)證API來(lái)檢查表單的輸入資料的程式碼實(shí)例

以上就是HTML5利用約束驗(yàn)證API來(lái)檢查表單的輸入數(shù)據(jù)的代碼實(shí)例?的內(nèi)容,更多相關(guān)內(nèi)容請(qǐng)關(guān)注PHP中文網(wǎng)(www.miracleart.cn)!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願(yuàn)投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請(qǐng)聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動(dòng)的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

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

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強(qiáng)大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁(yè)開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)程式碼編輯軟體(SublimeText3)

H5是HTML5的速記嗎?探索細(xì)節(jié) H5是HTML5的速記嗎?探索細(xì)節(jié) Apr 14, 2025 am 12:05 AM

H5不僅僅是HTML5的簡(jiǎn)稱,它代表了一個(gè)更廣泛的現(xiàn)代網(wǎng)頁(yè)開發(fā)技術(shù)生態(tài):1.H5包括HTML5、CSS3、JavaScript及相關(guān)API和技術(shù);2.它提供更豐富、互動(dòng)、流暢的用戶體驗(yàn),能在多設(shè)備上無(wú)縫運(yùn)行;3.使用H5技術(shù)棧可以創(chuàng)建響應(yīng)式網(wǎng)頁(yè)和復(fù)雜交互功能。

H5和HTML5:網(wǎng)絡(luò)開發(fā)中常用的術(shù)語(yǔ) H5和HTML5:網(wǎng)絡(luò)開發(fā)中常用的術(shù)語(yǔ) Apr 13, 2025 am 12:01 AM

H5與HTML5指的是同一個(gè)東西,即HTML5。 HTML5是HTML的第五個(gè)版本,帶來(lái)了語(yǔ)義化標(biāo)籤、多媒體支持、畫布與圖形、離線存儲(chǔ)與本地存儲(chǔ)等新功能,提升了網(wǎng)頁(yè)的表現(xiàn)力和交互性。

了解H5代碼:HTML5的基本原理 了解H5代碼:HTML5的基本原理 Apr 17, 2025 am 12:08 AM

HTML5是構(gòu)建現(xiàn)代網(wǎng)頁(yè)的關(guān)鍵技術(shù),提供了許多新元素和功能。 1.HTML5引入了語(yǔ)義化元素如、、等,增強(qiáng)了網(wǎng)頁(yè)結(jié)構(gòu)和SEO。 2.支持多媒體元素和,無(wú)需插件即可嵌入媒體。 3.表單增強(qiáng)了新輸入類型和驗(yàn)證屬性,簡(jiǎn)化了驗(yàn)證過(guò)程。 4.提供了離線和本地存儲(chǔ)功能,提升了網(wǎng)頁(yè)性能和用戶體驗(yàn)。

HTML5:現(xiàn)代網(wǎng)絡(luò)的基礎(chǔ)(H5) HTML5:現(xiàn)代網(wǎng)絡(luò)的基礎(chǔ)(H5) Apr 21, 2025 am 12:05 AM

HTML5是超文本標(biāo)記語(yǔ)言的最新版本,由W3C標(biāo)準(zhǔn)化。 HTML5引入了新的語(yǔ)義化標(biāo)籤、多媒體支持和表單增強(qiáng),提升了網(wǎng)頁(yè)結(jié)構(gòu)、用戶體驗(yàn)和SEO效果。 HTML5引入了新的語(yǔ)義化標(biāo)籤,如、、、等,使網(wǎng)頁(yè)結(jié)構(gòu)更清晰,SEO效果更好。 HTML5支持多媒體元素和,無(wú)需第三方插件,提升了用戶體驗(yàn)和加載速度。 HTML5增強(qiáng)了表單功能,引入了新的輸入類型如、等,提高了用戶體驗(yàn)和表單驗(yàn)證效率。

HTML5:標(biāo)準(zhǔn)及其對(duì)Web開發(fā)的影響 HTML5:標(biāo)準(zhǔn)及其對(duì)Web開發(fā)的影響 Apr 27, 2025 am 12:12 AM

HTML5的核心特性包括語(yǔ)義化標(biāo)籤、多媒體支持、離線存儲(chǔ)與本地存儲(chǔ)、表單增強(qiáng)。 1.語(yǔ)義化標(biāo)籤如、等,提升代碼可讀性和SEO效果。 2.和標(biāo)籤簡(jiǎn)化多媒體嵌入。 3.離線存儲(chǔ)和本地存儲(chǔ)如ApplicationCache和LocalStorage,支持無(wú)網(wǎng)絡(luò)運(yùn)行和數(shù)據(jù)存儲(chǔ)。 4.表單增強(qiáng)引入新輸入類型和驗(yàn)證屬性,簡(jiǎn)化處理和驗(yàn)證。

HTML5和H5:了解常見用法 HTML5和H5:了解常見用法 Apr 22, 2025 am 12:01 AM

HTML5和H5沒有區(qū)別,H5是HTML5的簡(jiǎn)稱。 1.HTML5是HTML的第五個(gè)版本,增強(qiáng)了網(wǎng)頁(yè)的多媒體和交互功能。 2.H5常用於指代基於HTML5的移動(dòng)網(wǎng)頁(yè)或應(yīng)用,適用於各種移動(dòng)設(shè)備。

H5和HTML5之間的連接:相似性和差異 H5和HTML5之間的連接:相似性和差異 Apr 24, 2025 am 12:01 AM

H5和HTML5是不同的概念:HTML5是HTML的一個(gè)版本,包含新元素和API;H5是基於HTML5的移動(dòng)應(yīng)用開發(fā)框架。 HTML5通過(guò)瀏覽器解析和渲染代碼,H5應(yīng)用則需要容器運(yùn)行並通過(guò)JavaScript與原生代碼交互。

理解H5:含義和意義 理解H5:含義和意義 May 11, 2025 am 12:19 AM

H5是HTML5,是HTML的第五個(gè)版本。 HTML5提升了網(wǎng)頁(yè)的表現(xiàn)力和交互性,引入了語(yǔ)義化標(biāo)籤、多媒體支持、離線存儲(chǔ)和Canvas繪圖等新特性,推動(dòng)了Web技術(shù)的發(fā)展。

See all articles