JavaScript invalid 事件
程式語言中,名稱總是能夠體現功能,所以掌握一個概念的功能可以從其名稱入手。
invalid由in與valid組合而成,in在語法中表示否定的意思,valid翻譯成漢語具有"有效"或者"健全"的意思。
那麼兩者組合起來表示"無效"或者"不健全",顧名思義,此事件在HTML5內建表單驗證失敗時觸發。
關於事件處理函式註冊,可以參閱如何註冊事件處理函式一章節。
瀏覽器支援:
(1).IE9+瀏覽器支援此事件。
(2).edge瀏覽器支援此事件。
(3).火狐瀏覽器支援此事件。
(4).Opera瀏覽器支援此事件。
(5).谷歌瀏覽器支援此事件。
(6).safria瀏覽器支援此事件。
invalid事件主要特點:
(1).事件不具有冒泡階段。
(2).事件具有捕獲階段。
(3).任何一個HTML5內建驗證規則沒有滿足,都會觸發此事件。
首先介紹一下此事件的上述三個特點:
關於事件冒泡和事件捕獲相關知識本文不再介紹,可以參閱如下兩篇文章:
(1).事件冒泡可以參閱JavaScript 事件冒泡一章節。
(2).事件捕獲可以參閱JavaScript 事件捕獲一章節。
關於內建驗證規則需要稍稍注意,比如為文字框新增required屬性,如果文字框為空,那麼驗證失敗。
此時invalid事件會觸發,因為required屬於HTML5內建的驗證規則,通過pattern屬性配置的規則,也屬於HTML5內建規則。
但是如下驗證失敗,則不會觸發invalid事件,程式碼例項如下:
[HTML] 純文字檢視 複製程式碼執行程式碼<!doctype html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style> body{margin:50px;} </style> <script> window.onload=function(){ let num=document.getElementById("num"); let obt=document.getElementById("bt"); obt.onclick=function(){ if(num.value==""){ alert("文字框不能為空"); return false; } } } </script> </head> <body> <form action="http://www.softwhy.com/"> <input type="text" id="num"/> <input type="submit" id="bt" value="提交表單"> </form> </body> </html>
點選提交按鈕,如果文字框為空,那麼會彈出報錯提示,但是invalid事件不會被觸發。
因為上述程式碼並不是因為未滿足HTML5內建驗證規則而報錯,只是一個簡單的邏輯判斷。
可以利用invalid事件對HTML5內建驗證規則進行靈活應用,從而定製我們所需要的表單驗證。
程式碼例項如下:
[HTML] 純文字檢視 複製程式碼執行程式碼<!doctype html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style> body{margin:50px;} #error{ display:none; color:red; } </style> <script> window.onload=function(){ let num=document.getElementById("num"); let obt=document.getElementById("bt"); let error=document.getElementById("error"); num.oninvalid=function(){ let v=num.validity; if(true === v.valueMissing){ error.style.display="inline-block"; error.innerHTML="欄位不能為空"; num.focus(); return false; }else if(true === v.patternMismatch){ error.style.display="inline-block"; error.innerHTML="請輸入3-8位數字"; num.focus(); return false; } } } </script> </head> <body> <form action="http://www.softwhy.com/"> <input type="text" id="num" required pattern="^\d{3,8}$"/> <span id="error">郵箱不能為空</span> <br/> <input type="submit" id="bt" value="提交表單"> </form> </body> </html>
在預設狀態下,如果內建驗證規則沒有得到滿足,表單提交時會以彈出警告的形式給出提示資訊。
上面程式碼通過invalid事件實現對錶單驗證資訊的定製功能,當文字框驗證不通過時,會在其右側給出提示資訊。
特別說明:只要任何一個HTML5內建驗證規則沒有得到滿足,都會觸發此事件。
相關文章
- JavaScript事件JavaScript事件
- JavaScript 事件JavaScript事件
- JavaScript dragstart 事件JavaScript事件
- JavaScript drag 事件JavaScript事件
- JavaScript dragend 事件JavaScript事件
- JavaScript dragenter 事件JavaScript事件
- JavaScript dragover 事件JavaScriptGo事件
- JavaScript dragleave 事件JavaScript事件
- JavaScript drop 事件JavaScript事件
- JavaScript storage 事件JavaScript事件
- JavaScript resize 事件JavaScript事件
- JavaScript mouseup 事件JavaScript事件
- JavaScript mouseover 事件JavaScript事件
- JavaScript mousedown 事件JavaScript事件
- JavaScript focus 事件JavaScript事件
- JavaScript reset 事件JavaScript事件
- JavaScript blur 事件JavaScript事件
- JavaScript input 事件JavaScript事件
- JavaScript keyup 事件JavaScript事件
- JavaScript 事件冒泡JavaScript事件
- JavaScript submit 事件JavaScriptMIT事件
- JavaScript change 事件JavaScript事件
- JavaScript mouseleave 事件JavaScript事件
- JavaScript mousemove 事件JavaScript事件
- JavaScript keypress 事件JavaScript事件
- JavaScript keydown 事件JavaScript事件
- JavaScript select 事件JavaScript事件
- JavaScript contextmenu 事件JavaScriptContext事件
- JavaScript mouseenter 事件JavaScript事件
- JavaScript animationIteration 事件JavaScript事件
- JavaScript animationStart 事件JavaScript事件
- JavaScript事件模型JavaScript事件模型
- JavaScript mouseout 事件JavaScript事件
- JavaScript hashchange 事件JavaScript事件
- JavaScript dblclick 事件JavaScript事件
- JavaScript click 事件JavaScript事件
- JavaScript abort事件JavaScript事件
- JavaScript animationEnd 事件JavaScript事件