vue點(diǎn)擊頁(yè)面空白處實(shí)現(xiàn)保存功能
功能描述
雙擊表格一行實(shí)現(xiàn)表格編輯,點(diǎn)擊空白處實(shí)現(xiàn)保存。
表格可編輯相關(guān)文章在可編輯表格
實(shí)現(xiàn)思路
當(dāng)表格在編輯狀態(tài)的時(shí)候在頁(yè)面進(jìn)行click監(jiān)聽(tīng),判斷點(diǎn)擊區(qū)域是否為編輯區(qū)域,如果不是編輯區(qū)域?qū)崿F(xiàn)保存功能并取消click監(jiān)聽(tīng)
功能點(diǎn)一:頁(yè)面監(jiān)聽(tīng)與取消接聽(tīng)
// 通過(guò)addEventListener與removeEventListener實(shí)現(xiàn) document.addEventListener("click", function, false); document.removeEventListener("click", function, false);
功能點(diǎn)二:判斷點(diǎn)擊區(qū)域是否為可編輯區(qū)域
該功能點(diǎn)有一定難度,首先你需要判斷點(diǎn)擊區(qū)域是否為表格區(qū)域,其次你要判斷點(diǎn)擊的區(qū)域是否為編輯狀態(tài)的呢一行。所以我分為兩步去實(shí)現(xiàn)
1、判斷點(diǎn)擊區(qū)域是否為表格區(qū)域
該功能點(diǎn)通過(guò) contains 接口實(shí)現(xiàn)。判斷條件為 tableDom.contains(target) ;該接口可以判斷target是否為tableDom的子節(jié)點(diǎn)。
// 首先通過(guò)addEventListener 傳入點(diǎn)擊的dom區(qū)域 document.addEventListener( "click", e => { this.judgeClickDom(e); }, false ); // this.bindClick是為了取消監(jiān)聽(tīng),下文會(huì)進(jìn)行描述 // 判斷點(diǎn)擊是否為table區(qū)域 judgeClickDom(e) { const { target } = e; let tableDom = document.getElementsByClassName("table"); // getElementsByClassName獲取到的是數(shù)組,一定要有下標(biāo)不然會(huì)報(bào)錯(cuò) // 如果我們點(diǎn)擊的區(qū)域在表格外保存數(shù)據(jù) if (!tableDom[0].contains(target)) { this.saveTableData(); } },
2.判斷點(diǎn)擊區(qū)域是否為編輯狀態(tài)的那一行
該功能借助了element框架, 如何標(biāo)記編輯狀態(tài)行,在可編輯表格中已有介紹
取消監(jiān)聽(tīng)
由于我們監(jiān)聽(tīng)click時(shí)使用的是箭頭函數(shù),沒(méi)有函數(shù)名或者函數(shù)表達(dá)式,所以在取消監(jiān)聽(tīng)的時(shí)候會(huì)出現(xiàn)問(wèn)題。 我的解決方案是給他綁定一個(gè)全局變量bindClick。 代碼如下
// 開(kāi)始監(jiān)聽(tīng) document.addEventListener("click", (this.bindClick = e => { ... }) ); // 取消監(jiān)聽(tīng) document.removeEventListener("click", this.bindClick);
總結(jié)
以上所述是小編給大家介紹的vue點(diǎn)擊頁(yè)面空白處實(shí)現(xiàn)保存功能,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
如果你覺(jué)得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!
- 解決vue 打包發(fā)布去#和頁(yè)面空白的問(wèn)題
- vue項(xiàng)目打包后打開(kāi)頁(yè)面空白解決辦法
- Vue下路由History模式打包后頁(yè)面空白的解決方法
- vue+webpack 打包文件 404 頁(yè)面空白的解決方法
- Vue 2.0在IE11中打開(kāi)項(xiàng)目頁(yè)面空白的問(wèn)題解決
- vue項(xiàng)目實(shí)現(xiàn)表單登錄頁(yè)保存賬號(hào)和密碼到cookie功能
- vue實(shí)現(xiàn)提示保存后退出的方法
- vue生成token保存在客戶(hù)端localStorage中的方法
- 詳解使用Vue Router導(dǎo)航鉤子與Vuex來(lái)實(shí)現(xiàn)后退狀態(tài)保存
- Vue中保存用戶(hù)登錄狀態(tài)實(shí)例代碼
相關(guān)文章
Vite圖片資源打包優(yōu)化的實(shí)現(xiàn)
本文主要介紹了Vite圖片資源打包優(yōu)化的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-04-04JavaScript獲取echart曲線(xiàn)上任意點(diǎn)位的值詳解
這篇文章主要為大家介紹了JavaScript獲取echart曲線(xiàn)上任意點(diǎn)位的值詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-09-09vue報(bào)錯(cuò)Cannot?read?properties?of?undefined?(...)類(lèi)型的解決辦法
這篇文章主要給大家介紹了關(guān)于vue報(bào)錯(cuò)Cannot?read?properties?of?undefined?(...)類(lèi)型的解決辦法,文中通過(guò)代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2024-04-04vue-seamless-scroll 實(shí)現(xiàn)簡(jiǎn)單自動(dòng)無(wú)縫滾動(dòng)且添加對(duì)應(yīng)點(diǎn)擊事件的簡(jiǎn)單整理
vue-seamless-scroll是一個(gè)基于Vue.js的簡(jiǎn)單無(wú)縫滾動(dòng)組件, 基于requestAnimationFrame實(shí)現(xiàn),配置多滿(mǎn)足多樣需求,目前支持上下左右無(wú)縫滾動(dòng),單步滾動(dòng),及支持水平方向的手動(dòng)切換功能,本節(jié)介紹,vue添加 vue-seamless-scroll實(shí)現(xiàn)自動(dòng)無(wú)縫滾動(dòng)的效果,并對(duì)應(yīng)添加點(diǎn)擊事件2023-01-01ant-design-vue時(shí)間線(xiàn)使用踩坑及解決
這篇文章主要介紹了ant-design-vue時(shí)間線(xiàn)使用踩坑及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-12-12