HTML5表單驗(yàn)證

在支持HTML5表單驗(yàn)證的瀏覽器中蚣旱,可以通過表單控件來訪問ValidityState對(duì)象

<form action="#">
  <input type="text" name="txt" id="txt" required="" /> 
  <input type="email" name="email" id="email" required="" /> 
  <input type="submit" name="btn" value="submit" />
  <br />
  <input type="button" value="驗(yàn)證 email 元素" onclick="validateEmail();" />
</form>
function validateEmail(){
    var email = document.getElementById("email");
    var validityState = email.validity;
    alert (
        validityState.valid + " " +
        validityState.valueMissing + " " +
        validityState.typeMismatch + " " +
        validityState.patternMismatch + " " +
        validityState.tooLong + " " +
        validityState.rangeUnderflow + " " +
        validityState.rangeOverflow + " " +
        validityState.stepMismatch + " " +
        validityState.customError);
}

valid屬性表示表單控件是否通過了所有的驗(yàn)證約束條件坪哄,就是最終的驗(yàn)證結(jié)果担映,如果8個(gè)驗(yàn)證條件都通過了持痰,就是true,只要有一個(gè)返回true修陡,valid就是false
valueMissing
設(shè)置了required如果沒填返回true
typeMismatch
type=number不是數(shù)字朽缴,email沒有@
patternMismatch
是否符合正則表達(dá)式
pattern屬性可以設(shè)置控件的正則表達(dá)式驗(yàn)證機(jī)制善玫,需要同時(shí)設(shè)置title告訴用戶這個(gè)規(guī)則

<input type="text" id="country_code" name="country_code" pattern="[A-z]{3}" title="請(qǐng)?zhí)顚?個(gè)字母的國家代碼" />

tooLong
設(shè)置了maxLength,如果超過了返回true
rangeUnderflow
設(shè)置了min值密强,如果小于最小值茅郎,返回true
rangeOverflow
設(shè)置了max值,如果大于最大值或渤,返回true
stepMismatch
設(shè)置了step系冗,如果出現(xiàn)了不滿足step的值,返回true
customeError
自定義驗(yàn)證消息薪鹦,一般用在驗(yàn)證兩次輸入的密碼是否一致
通過setCustomValidity函數(shù)來自定義錯(cuò)誤提示消息

<input type="text" id="password1" onchange="checkPwd()" />
<input type="text" id="password2" onchange="checkPwd()" />
function checkPwd(){
    var pwd1 = document.getElementById("password1");
    var pwd2 = document.getElementById("password2");
    if (pwd1.value != pwd2.value){
        pwd1.setCustomValidity("密碼不一致掌敬!");
    }else{
        pwd1.setCustomValidity("");
    }
}

驗(yàn)證反饋
為字段添加invalid事件處理函數(shù)可以接收到驗(yàn)證通知,自定義提示信息池磁,通過preventDefault阻止瀏覽器的默認(rèn)驗(yàn)證處理奔害。
通過e.stopPropagation();方法可以阻止事件冒泡

function handler(e){
    var validity = e.srcElement.validity;
    if (validity.patternMismatch)
    {
        alert("格式錯(cuò)誤!");
    }
    e.preventDefault();
}
document.getElementById("country_code").addEventListener("invalid", handler, false);

關(guān)閉驗(yàn)證
應(yīng)用場(chǎng)景地熄,表單保存的時(shí)候华临,不需要驗(yàn)證
通過設(shè)置formNoValidate屬性來實(shí)現(xiàn)

<input type="submit" name="save" formnovalidate value="保存" />

表單樣式
可以通過偽類來控制驗(yàn)證的樣式
valid 驗(yàn)證通過待提交狀態(tài)
invalid 驗(yàn)證失敗的樣式
in-range 在最大值和最小值之間
out-of-range 不在范圍內(nèi)
required 必須的元素
optional 不是必填的元素

input:invalid {
  border:1px solid red;
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市端考,隨后出現(xiàn)的幾起案子雅潭,更是在濱河造成了極大的恐慌,老刑警劉巖却特,帶你破解...
    沈念sama閱讀 212,222評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件扶供,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡核偿,警方通過查閱死者的電腦和手機(jī)诚欠,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,455評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來漾岳,“玉大人轰绵,你說我怎么就攤上這事∧峋#” “怎么了左腔?”我有些...
    開封第一講書人閱讀 157,720評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長捅儒。 經(jīng)常有香客問我液样,道長振亮,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,568評(píng)論 1 284
  • 正文 為了忘掉前任鞭莽,我火速辦了婚禮坊秸,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘澎怒。我一直安慰自己褒搔,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,696評(píng)論 6 386
  • 文/花漫 我一把揭開白布喷面。 她就那樣靜靜地躺著星瘾,像睡著了一般。 火紅的嫁衣襯著肌膚如雪惧辈。 梳的紋絲不亂的頭發(fā)上琳状,一...
    開封第一講書人閱讀 49,879評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音盒齿,去河邊找鬼念逞。 笑死,一個(gè)胖子當(dāng)著我的面吹牛县昂,可吹牛的內(nèi)容都是我干的肮柜。 我是一名探鬼主播,決...
    沈念sama閱讀 39,028評(píng)論 3 409
  • 文/蒼蘭香墨 我猛地睜開眼倒彰,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了莱睁?” 一聲冷哼從身側(cè)響起待讳,我...
    開封第一講書人閱讀 37,773評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎仰剿,沒想到半個(gè)月后创淡,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,220評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡南吮,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,550評(píng)論 2 327
  • 正文 我和宋清朗相戀三年琳彩,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片部凑。...
    茶點(diǎn)故事閱讀 38,697評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡露乏,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出涂邀,到底是詐尸還是另有隱情瘟仿,我是刑警寧澤,帶...
    沈念sama閱讀 34,360評(píng)論 4 332
  • 正文 年R本政府宣布比勉,位于F島的核電站劳较,受9級(jí)特大地震影響驹止,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜观蜗,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,002評(píng)論 3 315
  • 文/蒙蒙 一臊恋、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧墓捻,春花似錦抖仅、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,782評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至厂画,卻和暖如春凸丸,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背袱院。 一陣腳步聲響...
    開封第一講書人閱讀 32,010評(píng)論 1 266
  • 我被黑心中介騙來泰國打工屎慢, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人忽洛。 一個(gè)月前我還...
    沈念sama閱讀 46,433評(píng)論 2 360
  • 正文 我出身青樓腻惠,卻偏偏與公主長得像,于是被迫代替她去往敵國和親欲虚。 傳聞我的和親對(duì)象是個(gè)殘疾皇子集灌,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,587評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容

  • HTML表單 在HTML中,表單是 ... 之間元素的集合复哆,它們?cè)试S訪問者輸入文本欣喧、選擇選項(xiàng)、操作對(duì)象等等梯找,然后將...
    蘭山小亭閱讀 3,412評(píng)論 2 14
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理唆阿,服務(wù)發(fā)現(xiàn),斷路器锈锤,智...
    卡卡羅2017閱讀 134,633評(píng)論 18 139
  • 版本:Angular 5.0.0-alpha 表單是商業(yè)應(yīng)用的支柱驯鳖,我們用它來執(zhí)行登錄、求助久免、下單浅辙、預(yù)訂機(jī)票、安排...
    soojade閱讀 1,270評(píng)論 0 1
  • Angular 支持非常強(qiáng)大的內(nèi)置表單驗(yàn)證妄壶,maxlength摔握、minlength、required 以及 pat...
    sunny_lvy閱讀 19,957評(píng)論 3 25
  • 細(xì)說 Angular 2+ 的表單(二):響應(yīng)式表單 摘要 在企業(yè)應(yīng)用開發(fā)時(shí)丁寄,表單是一個(gè)躲不過去的事情氨淌,和面向消費(fèi)...
    接灰的電子產(chǎn)品閱讀 5,785評(píng)論 8 28