JavaScript事件Event對象詳解(屬性、方法、自定義事件)
一、Event對象
1、簡介
? 事件event
對象是指在瀏覽器中觸發(fā)事件時,瀏覽器會自動創(chuàng)建一個event
對象,其中存儲了本次事件相關(guān)的信息,包括事件類型、事件目標(biāo)、觸發(fā)元素等等。瀏覽器創(chuàng)建完event
對象之后,會自動將該對象作為參數(shù)傳遞給綁定的事件處理函數(shù),我們可以在事件處理函數(shù)中通過訪問event
對象的屬性和方法,來獲取事件的相關(guān)信息,并做出后續(xù)的邏輯處理。
? 事件可以由用戶操作觸發(fā),例如:鼠標(biāo)事件、鍵盤事件等等;也可以通過 JS 腳本代碼來觸發(fā),例如:通過element.click()
方法,觸發(fā)對應(yīng)元素的點擊事件;還可以由API生成,例如:動畫完成后觸發(fā)對應(yīng)事件、視頻播放被暫停時觸發(fā)對應(yīng)事件;最后還可以通過自定義事件來進(jìn)行觸發(fā)。這四種方式都會創(chuàng)建并傳遞event
對象。
? 除了我們自己綁定的事件處理函數(shù)之外,瀏覽器會對某些元素的某些事件存在默認(rèn)處理,例如: a 標(biāo)簽的click
點擊事件,默認(rèn)處理為跳轉(zhuǎn)到鏈接的地址。當(dāng)然我們也可以通過event
對象的preventDefault()
方法來阻止瀏覽器的默認(rèn)處理。
? 我們還需要注意元素的嵌套關(guān)系,因為由于元素結(jié)構(gòu)上的重疊,事件會隨著嵌套關(guān)系依次傳遞,也就是事件冒泡和事件捕獲。
2、Event對象示例
3、常用屬性
① event.bubbles(只讀)
? 該屬性值為布爾值,表示當(dāng)前事件是否會進(jìn)行冒泡,true
表示會冒泡,false
表示不會冒泡。在前端事件大部分都是默認(rèn)冒泡的,例如:click
、mousedown
等等;但也有一些特殊事件是默認(rèn)不冒泡的,例如:focus
、blur
等等。
② event.cancelBubble
? 該屬性值為布爾值,表示是否阻止當(dāng)前事件的冒泡,默認(rèn)為false
,不阻止冒泡;設(shè)置為true
則表示阻止當(dāng)前事件冒泡。目前該屬性已經(jīng)完全被stopPropagetion()
方法所取代,雖然部分瀏覽器處于兼容性的考慮依舊支持該屬性,但后續(xù)隨時有可能停止支持,因此盡量不要使用該屬性。
③ event.cancelable(只讀)
? 該屬性值為布爾值,表示當(dāng)前事件的默認(rèn)行為是否可以被取消,即是否能通過event.preventDefault()
來取消默認(rèn)行為,true
表示可以取消,false
表示不可以取消。
? 如果是自定義事件,則在初始化事件時可以聲明該事件是否可以被取消。
④ event.composed(只讀)
? 該屬性值為布爾值,曾用名:scoped
,表示當(dāng)前事件是否可以打破屏障,從Shadow DOM
冒泡傳遞到普通DOM,如果值為true
表示當(dāng)事件可以冒泡,即bubbles
屬性為true
時,事件可以從Shadow DOM
冒泡傳遞到普通DOM,此時可以通過composedPath()
方法,來獲取事件冒泡的路徑;如果值為false
,則表示事件不會跨越Shadow DOM
與普通DOM的屏障進(jìn)行冒泡。
? 關(guān)于Shadow DOM
的概念,在下面有進(jìn)行講解。
⑤ event.currentTarget(只讀)
? 該屬性值為一個DOM,表示當(dāng)前事件所綁定的那個DOM元素。而且要注意的是,該屬性值只能在事件處理函數(shù)的過程中event.currentTarget
直接調(diào)用使用,如果我們通過console.log(event)
輸出事件對象,如同上面的示例,我們會發(fā)現(xiàn)該屬性值的值為null
,無法訪問到正確的值。我們在調(diào)試階段,還可以通過在事件處理函數(shù)中設(shè)置debugger
暫停代碼執(zhí)行,從而在輸出的event
對象上看到該屬性正確的值。
⑥ event.target(只讀)
? 該屬性值為一個DOM,表示觸發(fā)當(dāng)前事件的那個DOM元素。通常情況下該屬性的值與event.currentTarget
相同,但是如果當(dāng)前事件是在冒泡或者捕獲階段被調(diào)用,則兩者的值不同,target
的值為觸發(fā)事件的DOM,currentTarget
的值為綁定事件的DOM。
? 我們還可以借助target
屬性實現(xiàn)事件委托,又稱事件代理,是指在要對一批子元素設(shè)置類似的事件處理器時,利用事件冒泡的機(jī)制,將事件處理器綁定到其公共父元素上,然后通過target
屬性,來區(qū)分是由哪個子元素觸發(fā)的事件,并進(jìn)行相應(yīng)的邏輯處理。這樣即可以大大的減少事件處理器的數(shù)量,提高性能,又可以動態(tài)地添加或刪除子元素而不需要添加或刪除相應(yīng)的事件處理器,減少代碼復(fù)雜度。
target與currentTarget在冒泡階段對比
案例代碼:
<div id="divBox"> <div id="divClick"> 這里觸發(fā)點擊事件 </div> </div> <script> // 事件綁定在子元素上 此時 target = document.querySelector('#divClick').addEventListener('click', function (e) { console.log(e) console.log(e.target) console.log(e.currentTarget) }) document.querySelector('#divBox').addEventListener('click', function (e) { console.log(e) console.log(e.target) console.log(e.currentTarget) }) </script>
執(zhí)行結(jié)果:
⑦ event.defaultPrevented(只讀)
? 該屬性值為布爾值,表示當(dāng)前事件是否調(diào)用了event.preventDefault()
方法,從而阻止了瀏覽器的默認(rèn)行為,true
表示已經(jīng)調(diào)用過,false
表示還未調(diào)用。
⑧ event.returnValue
? 屬性值為布爾值,表示當(dāng)前事件的默認(rèn)行為是否執(zhí)行,該屬性可讀可寫,true
表示正常執(zhí)行,false
表示阻止默認(rèn)行為。該屬性是由IE率先引入,最后被收入web規(guī)范,該屬性相當(dāng)于event.defaultPrevented
和event.preventDefault()
的結(jié)合。
案例代碼:
<a rel="external nofollow" rel="external nofollow" rel="external nofollow" id="a0">不阻止默認(rèn)行為</a> <a rel="external nofollow" rel="external nofollow" rel="external nofollow" id="a1">event.returnValue阻止默認(rèn)行為</a> <a rel="external nofollow" rel="external nofollow" rel="external nofollow" id="a2">event.preventDefault()阻止默認(rèn)行為</a> <script> document.querySelector('#a0').addEventListener('click', function (e) { // 不阻止默認(rèn)行為 console.log('不阻止默認(rèn)行為的e.returnValue---', e.returnValue) // 打斷點 暫停頁面跳轉(zhuǎn) 方便查看控制臺輸出 debugger }) document.querySelector('#a1').addEventListener('click', function (e) { // 阻止默認(rèn)行為 e.returnValue = false console.log('通過returnValue = false阻止默認(rèn)行為的e.returnValue---', e.returnValue) }) document.querySelector('#a2').addEventListener('click', function (e) { // 阻止默認(rèn)行為 e.preventDefault() console.log('通過preventDefault()阻止默認(rèn)行為的e.returnValue---', e.returnValue) }) </script>
執(zhí)行結(jié)果:
⑨ event.eventPhase(只讀)
? 該屬性值為整數(shù)數(shù)值,表示事件流的當(dāng)前執(zhí)行階段,共分為四個階段,每個階段有不同的事件階段常量,如下:
常量 | 值 | 描述 |
---|---|---|
Event.NONE | 0 | 這個階段,沒有事件正在被處理 |
Event.CAPTURING_PHASE | 1 | 這個階段是指事件捕獲的過程,事件正在被目標(biāo)元素的祖先對象處理,是從最外層的祖先元素到目標(biāo)元素的過程,從Window 、Document 、…、目標(biāo)元素 的過程。 |
Event.AT_TARGET | 2 | 這個階段是指到達(dá)目標(biāo)元素的過程。如果 Event.bubbles 的值為 false ,即事件不會冒泡,則對事件對象的處理在這個階段后就會結(jié)束。 |
Event.BUBBLING_PHASE | 3 | 這個階段是指事件冒泡的過程,從從目標(biāo)元素到最外層的祖先元素的過程。 |
事件流的執(zhí)行過程:
? 當(dāng)我們通過event.eventPhase
獲取當(dāng)前事件流的執(zhí)行階段時,會直接獲取到當(dāng)前事件階段常量的值,我們可以直接根據(jù)值判斷事件流的執(zhí)行階段,也可以通過對比event.eventPhase
與事件階段常量是否強(qiáng)相等(===
),判斷事件流的執(zhí)行階段。
案例代碼:
<div id="div0"> <div id="div1">事件流演示</div> </div> <script> // addEventListener設(shè)置第三個參數(shù)為true 表示在捕獲階段觸發(fā)事件 document.querySelector('#div0').addEventListener('click', function (e) { console.log('div0--', e) // 輸出事件階段常量的值 console.log('捕獲階段的事件階段常量---', e.eventPhase) // 判斷事件階段是否為捕獲階段 console.log(e.eventPhase === Event.CAPTURING_PHASE) }, true) // addEventListener設(shè)置第三個參數(shù)為false或者不設(shè)置 表示在冒泡階段觸發(fā)事件 document.querySelector('#div0').addEventListener('click', function (e) { console.log('div0--', e) // 輸出事件階段常量的值 console.log('冒泡階段的事件階段常量---', e.eventPhase) // 判斷事件階段是否為冒泡階段 console.log(e.eventPhase === Event.BUBBLING_PHASE) }) // 目標(biāo)元素 document.querySelector('#div1').addEventListener('click', function (e) { console.log('div1--', e) // 輸出事件階段常量的值 console.log('到達(dá)目標(biāo)元素的事件階段常量---', e.eventPhase) // 判斷事件階段是否為到達(dá)目標(biāo)元素階段 console.log(e.eventPhase === Event.AT_TARGET) }) </script>
執(zhí)行結(jié)果:
⑩ event.timeStamp(只讀)
? 該屬性值為一個數(shù)值,表示從文檔加載完成,到當(dāng)前事件被觸發(fā)之間的的毫秒數(shù),Chrome、Safari和Edge返回的是帶有小數(shù)的毫秒數(shù),F(xiàn)ireFox返回的是不帶小數(shù)的毫秒數(shù)。
? 因為各大瀏覽器之間的返回值并不統(tǒng)一,所以不太建議使用該屬性。
案例代碼:
<div style="width: 200px;height: 30px;" id="div2">點擊獲取事件發(fā)生時的毫秒數(shù)</div> <script> // 獲取事件發(fā)生時的毫秒數(shù) document.querySelector('#div2').addEventListener('click', function (e) { console.log('事件發(fā)生時的毫秒數(shù)---', e.timeStamp) }) </script>
執(zhí)行結(jié)果:
? event.type(只讀)
? 該屬性值是一個字符串,表示當(dāng)前事件的類型,不區(qū)分大小寫。
案例代碼:
<div style="width: 200px;height: 30px;" id="div3"> 點擊獲取事件的type屬性 </div> <script> // 獲取事件的type屬性 document.querySelector('#div3').addEventListener('click', function (e) { console.log('事件的type屬性---', e.type) }) </script>
執(zhí)行結(jié)果:
? event.isTrusted(只讀)
? 該屬性值是一個布爾值,表示當(dāng)前事件是由用戶行為觸發(fā),還是通過JS腳本觸發(fā),true
表示用戶行為觸發(fā),false
表示腳本觸發(fā)。
案例代碼:
<div style="width: 200px;height: 30px;" id="div4">點擊獲取事件的isTrusted屬性</div> <div id="div5"></div> <script> // 獲取用戶手動觸發(fā)時事件的isTrusted屬性 document.querySelector('#div4').addEventListener('click', function (e) { console.log('用戶手動觸發(fā)時事件的isTrusted屬性---', e.isTrusted) // 設(shè)置定時器模擬腳本觸發(fā)事件 setTimeout(() => { document.querySelector('#div5').click(); }, 1000) }) // 獲取腳本觸發(fā)時事件的isTrusted屬性 document.querySelector('#div5').addEventListener('click', function (e) { console.log('腳本觸發(fā)時事件的isTrusted屬性---', e.isTrusted) }) </script>
執(zhí)行結(jié)果:
4、常用方法
① event.composedPath()
? 該方法用來獲取當(dāng)前事件的事件傳播路徑,從觸發(fā)元素到最外層Window
,而且阻止冒泡的方法不會影響到事件的傳播路徑。如果Shadow DOM
根節(jié)點觸發(fā)事件,并且ShadowRoot.mode
是關(guān)閉的,則獲取的路徑中將不包括Shadow DOM
節(jié)點。
案例代碼:
<div id="div0"> <div id="div0Son"> 驗證target和currentTarget </div> </div> <script> // 獲取事件對象的事件路徑 document.querySelector('#div0Son').addEventListener('click', function (e) { // 阻止事件冒泡 但并不會影響事件的傳播路徑 e.stopPropagation() // 通過e.composedPath()獲取事件對象的事件路徑 console.log(e.composedPath()) }) </script>
執(zhí)行結(jié)果:
② event.preventDefault()
? 該方法用來取消當(dāng)前事件的默認(rèn)行為,當(dāng)然如果當(dāng)前事件存在冒泡行為,即bubbles
屬性為true
,那么事件的冒泡行為還是會繼續(xù)向上傳播,不會被影響。
案例代碼:
<div id="div1"> <input type="checkbox" id="checkbox"> </div> <script> // 阻止多選按鈕的默認(rèn)行為 document.querySelector('#checkbox').addEventListener('click', function (e) { e.preventDefault() }) // 驗證阻止默認(rèn)行為后是否會繼續(xù)冒泡 document.querySelector('#div1').addEventListener('click', function (e) { console.log('阻止默認(rèn)行為后會繼續(xù)冒泡') }) </script>
執(zhí)行結(jié)果:
③ event.stopPropagation()
? 該方法用來阻止當(dāng)前事件在捕獲階段和冒泡階段中的傳播,如果點擊了子元素,但是在子元素中阻止了事件的冒泡,那么父元素對應(yīng)的事件不會被觸發(fā);如果點擊了子元素,但是在父元素中阻止了事件的捕獲傳播,那么子元素對應(yīng)的事件將不會被觸發(fā)。
案例代碼:
<div id="div2"> <div id="div2Son"> 驗證stopPropagation()方法阻止事件冒泡傳播 </div> </div> <div id="div3"> <div id="div3Son"> 驗證stopPropagation()方法阻止事件捕獲傳播 </div> </div> <script> // 驗證stopPropagation()方法阻止事件冒泡 document.querySelector('#div2Son').addEventListener('click', function (e) { console.log('子元素阻止事件冒泡'); e.stopPropagation() }) // 驗證stopPropagation()方法阻止事件冒泡后父元素是否接收到冒泡的事件 document.querySelector('#div2').addEventListener('click', function (e) { console.log('父元素是否接收到冒泡的事件') }) // 驗證stopPropagation()方法阻止事件捕獲傳播 document.querySelector('#div3').addEventListener('click', function (e) { console.log('父元素阻止事件捕獲傳播'); e.stopPropagation() }, true) // 驗證stopPropagation()方法阻止事件捕獲后子元素是否接收到捕獲的事件 document.querySelector('#div3Son').addEventListener('click', function (e) { console.log('子元素是否接收到捕獲傳播的事件') }, true) </script>
執(zhí)行結(jié)果:
④ event.stoplmmediatePropagation()
? 該方法用來阻止當(dāng)前事件的其他事監(jiān)聽器被觸發(fā),如果我們通過addEventListener()
方法給同一個事件,增加多個事件監(jiān)聽器,那當(dāng)該事件被觸發(fā)時,多個事件監(jiān)聽器會按照添加的順序依次執(zhí)行。但如果我們在其中某個事件監(jiān)聽器綁定的函數(shù)中,執(zhí)行event.stoplmmediatePropagation()
方法,那么位于該事件監(jiān)聽器之后的其他監(jiān)聽器將不會被觸發(fā)。
案例代碼:
<div id="div4"> 驗證stopImmediatePropagation()法 </div> <script> // 驗證stopImmediatePropagation()方法 document.querySelector('#div4').addEventListener('click', function (e) { console.log('第一個事件監(jiān)聽器'); }) document.querySelector('#div4').addEventListener('click', function (e) { console.log('第二個事件監(jiān)聽器'); // 阻止后續(xù)事件監(jiān)聽器的執(zhí)行 e.stopImmediatePropagation() }) document.querySelector('#div4').addEventListener('click', function (e) { console.log('第三個事件監(jiān)聽器'); }) </script>
執(zhí)行結(jié)果:
5、Shadow DOM
? Shadow DOM 是Web components 的核心內(nèi)容,用于構(gòu)建獨立的web組件,可以將一個DOM樹和相應(yīng)的CSS樣式封裝隔離起來,與頁面的常規(guī)DOM相互隔離,不會出現(xiàn)影響和沖突。然后可以將封裝的Shadow DOM附加到常規(guī)的DOM節(jié)點上。操作Shadow DOM 的方式與常規(guī)DOM并無太大區(qū)別,都可以給DOM添加子節(jié)點、設(shè)置屬性,以及為節(jié)點添加自己的樣式。唯一有所不同的是:Shadow DOM內(nèi)部的元素除了設(shè)置 :focus-within
之外,設(shè)置其他任何屬性都不會影響到常規(guī) DOM。
? Shadow DOM 有以下四個主要概念:
- Shadow host:一個常規(guī)的DOM節(jié)點,Shadow DOM將會附加在該節(jié)點上。
- Shadow tree:一個DOM樹,即Shadow DOM 內(nèi)部的DOM結(jié)構(gòu)。
- Shadow boundary:Shadow DOM與常規(guī)DOM的分界線,是 Shadow DOM 結(jié)束的地方,也是常規(guī) DOM 開始的地方。
- Shadow root :Shadow tree所代表的DOM樹的根節(jié)點。
Shadow DOM主要概念圖解:
? 雖然Shadow DOM看起來比較陌生,但這并不是一個新特性,瀏覽器很早之前便在使用該特性,例如:<video>
標(biāo)簽,雖然我們在DOM中只能看到一個單獨的標(biāo)簽,但其實在該標(biāo)簽的Shadow DOM中,包含了進(jìn)度條、播放按鈕、倍速按鈕等DOM結(jié)構(gòu)。 Firefox(從版本 63 開始)、Chrome、Opera 、 Safari、Edge 都默認(rèn)支持 Shadow DOM。
二、自定義事件
1、簡介
? 在日常開發(fā)中我們通常使用的都是瀏覽器提前定義好的事件,例如:點擊事件click
、失去焦點事件blur
等等。當(dāng)這些基礎(chǔ)事件不能滿足我們的業(yè)務(wù)需求時,我們也可以通過創(chuàng)建自定義Event事件對象來自定義相關(guān)事件。
? 目前實現(xiàn)自定義事件的方式有兩種:Event()
構(gòu)造函數(shù)和CustomEvent()
構(gòu)造函數(shù)。
? 觸發(fā)自定義事件的方式為:element.dispatchEvent(event)
。
2、Event()
? 構(gòu)造函數(shù)Event(typeArg[,eventInit])
用來創(chuàng)建一個新的event
事件對象,該構(gòu)造函數(shù)擁有兩個參數(shù):第一個參數(shù)typeArg
為必填參數(shù),參數(shù)值為DOMString
類型,表示所創(chuàng)建事件的名稱;第二個參數(shù)eventInit
為可選參數(shù),參數(shù)值為EventInit
類型的對象數(shù)據(jù),擁有三條可選屬性:① bubbles
:屬性值為Boolean
類型,默認(rèn)值為false
,表示創(chuàng)建的事件是否能進(jìn)行冒泡。② cancelable
:屬性值為Boolean
類型,默認(rèn)值為false
,表示創(chuàng)建的事件的行為是否可以被preventDefault()
取消。③ composed
: 屬性值為為Boolean
類型,默認(rèn)值為false
,表示創(chuàng)建的事件是否可以穿透Shadow DOM
與常規(guī)DOM的屏障,進(jìn)行冒泡。
案例代碼:
<div class="div1"> <div class="div1Son"> 驗證自定義事件 </div> </div> <script> // 1、創(chuàng)建一個支持冒泡,支持取消,支持穿透 的look事件 let myEvent = new Event('look', { "bubbles": true, "cancelable": true, "composed": true }); // 2、監(jiān)聽自定義事件 document.querySelector('.div1Son').addEventListener('look', function (e) { console.log('監(jiān)聽到自定義事件----', e.type) }) // 3、利用點擊事件 去觸發(fā)自定義事件 document.querySelector('.div1Son').addEventListener('click', function (e) { // 觸發(fā)自定義事件 document.querySelector('.div1Son').dispatchEvent(myEvent) }) // 4、監(jiān)聽父元素是否收到冒泡的自定義事件 document.querySelector('.div1').addEventListener('look', function (e) { console.log('父元素是否收到冒泡的自定義事件----', e.type) }) </script>
執(zhí)行結(jié)果:
3、CustomEvent()
? 構(gòu)造函數(shù)CustomEvent(typeArg[,customEventInit])
用來創(chuàng)建一個新的CustomEvent
事件對象,該構(gòu)造函數(shù)擁有兩個參數(shù):第一個參數(shù)typeArg
為必填參數(shù),參數(shù)值為DOMString
類型,表示所創(chuàng)建事件的名稱;第二個可選參數(shù)customEventInit
,參數(shù)值為CustomEventInit
類型的對象數(shù)據(jù),擁有四條可選屬性:① bubbles
:屬性值為Boolean
類型,默認(rèn)值為false
,表示創(chuàng)建的事件是否能進(jìn)行冒泡。② cancelable
:屬性值為Boolean
類型,默認(rèn)值為false
,表示創(chuàng)建的事件的行為是否可以被preventDefault()
取消。③ composed
: 屬性值為為Boolean
類型,默認(rèn)值為false
,表示創(chuàng)建的事件是否可以穿透Shadow DOM
與常規(guī)DOM的屏障,進(jìn)行冒泡。④ detail
:屬性值為任意類型的數(shù)據(jù),默認(rèn)值為null
,通常用來表示與當(dāng)前事件相關(guān)的信息。
? Event
接口是 CustomEvent
接口的父級接口,因此 CustomEvent
繼承了 Event
的所有屬性和方法,并且在 Event
的基礎(chǔ)上添加了一個 detail
屬性,用于在事件處理程序中傳遞自定義數(shù)據(jù)。除此之外,CustomEvent
還允許我們在事件對象上添加自定義屬性和方法,以便在事件處理程序中使用。這使得我們可以創(chuàng)建更靈活、更具體的事件類型,并在事件處理程序中訪問和操作事件對象。
? 總的來說:CustomEvent
是自定義的事件類型,可操作性強(qiáng),可以更好地滿足開發(fā)人員的特定需求,而 Event
則更適合表示標(biāo)準(zhǔn)的、通用的事件類型,可操作性弱。
案例代碼:
<div class="div2"> <div class="div2Son"> 驗證CustomEvent()構(gòu)造函數(shù)創(chuàng)建自定義事件 </div> </div> <script> // 利用CustomEvent()構(gòu)造函數(shù)創(chuàng)建自定義事件 // 1、創(chuàng)建一個支持冒泡,支持取消,支持穿透,具有自定義屬性 的look事件 let myEvent2 = new CustomEvent('look', { "bubbles": true, "cancelable": true, "composed": false, detail: { info: '這是CustomEvent的detail屬性', // 自定義屬性 getTime: function () { // 自定義方法 return new Date() } } }); // 2、監(jiān)聽自定義事件 document.querySelector('.div2Son').addEventListener('look', function (e) { console.log('監(jiān)聽到自定義事件----', e) console.log('調(diào)用自定義事件上的自定義方法----', e.detail.getTime()) }) // 3、利用點擊事件 去觸發(fā)自定義事件 document.querySelector('.div2Son').addEventListener('click', function (e) { // 觸發(fā)自定義事件 document.querySelector('.div2Son').dispatchEvent(myEvent2) }) // 4、監(jiān)聽父元素是否收到冒泡的自定義事件 document.querySelector('.div2').addEventListener('look', function (e) { console.log('父元素是否收到冒泡的自定義事件----', e.type) }) </script>
執(zhí)行結(jié)果:
三、相關(guān)資料
總結(jié)
到此這篇關(guān)于JavaScript事件Event對象(屬性、方法、自定義事件)的文章就介紹到這了,更多相關(guān)JS事件Event對象內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
JavaScript使用簡單正則表達(dá)式的數(shù)據(jù)驗證功能示例
這篇文章主要介紹了JavaScript使用簡單正則表達(dá)式的數(shù)據(jù)驗證功能,結(jié)合實例形式分析了JS針對表單輸入內(nèi)容的簡單正則驗證操作技巧,需要的朋友可以參考下2017-01-01