Element input樹型下拉框的實(shí)現(xiàn)代碼
1.效果圖
1.1 input聚焦時(shí)顯示下拉框,再次點(diǎn)擊下拉框或點(diǎn)擊其他處下拉框消失,主要靠z-index添加遮罩實(shí)現(xiàn)
1.2 實(shí)時(shí)過濾效果
2.代碼 ( vue.js + element-ui )
2.1 html
<el-form :model="form" size="mini" > <el-row> <el-col :span='12'> <el-form-item label="會(huì)計(jì)主管" > <el-input placeholder="請(qǐng)選擇會(huì)計(jì)主管" class="width-220 selectTree-input" v-model="form.MANAGER_NAME" icon="caret-bottom" auto-complete="off" @focus="focus($event)" @click.native="changeSelectTree()"> </el-input> <div v-show="isShowSelect" style="position: fixed; top: 0; left: 0; width: 100%; height: 100%; z-index: 102;" @click="cancelManager"> </div> <el-tree v-show="isShowSelect" empty-text="暫無數(shù)據(jù)" :highlight-current = true :default-expand-all = false :expand-on-click-node="false" :filter-node-method="filterNode" :data="userlist" node-key="chr_id" :props="defaultProps" @node-click="selectManage" class="objectTree" ref="selectTree"> </el-tree> </el-form-item> </el-col> <el-col :span='12'> </el-col> </el-row> </el-form>
2.2 JS
import 'babel-polyfill'//兼容語法 async focus export default { data(){ return { form: { MANAGER_NAME: '', MANAGER_ID: '', }, isShowSelect: false,// 是否顯示會(huì)計(jì)主管的樹狀選擇器 userlist: [],// 會(huì)計(jì)主管的選項(xiàng)數(shù)據(jù) defaultProps: { // 會(huì)計(jì)主管 樹狀選擇器 的選項(xiàng)的配置參數(shù) children: 'children', label: 'code_name', }, } }, watch: { form: {//form.MANAGER_NAME變化時(shí)過濾節(jié)點(diǎn) handler(form){ if(this.isShowSelect){ this.$refs.selectTree.filter(form.MANAGER_NAME); } }, deep: true,//深度監(jiān)聽,重要 }, }, methods:{ //下拉框的顯示與隱藏 changeSelectTree(){ this.isShowSelect = !this.isShowSelect; }, //input獲取焦點(diǎn)事件,初始化樹 async focus(e) { let vm = this; vm.$refs.selectTree.filter(""); vm.$refs.selectTree.setCurrentNode([]); }, // 選擇器的樹節(jié)點(diǎn) filterNode(value, data) { if (!value) return true; if(!data.code_name){ data.code_name = data.chr_code + " " + data.chr_name } return data.code_name.indexOf(value) !== -1; }, //選擇會(huì)計(jì)主管 selectManage(data, Node) { this.form.MANAGER_NAME = data.code_name;//input賦值 this.form.MANAGER_ID = data.chr_id; this.isShowSelect = false;// 關(guān)閉選擇器 }, //點(diǎn)擊遮罩層,取消選擇會(huì)計(jì)主管 cancelManager(){ this.isShowSelect = false }, } }
2.3 css
<style lang="scss"> /*下拉框選擇樹*/ .objectTree { position: absolute; overflow: auto; z-index: 100; width: 110%; height: 200px; border: 1px solid #ddd; line-height: normal; z-index: 204; } .selectTree-input { input:focus { z-index: 204;//103 } } .width-220{ width: 220px } </style>
2.4 參考數(shù)據(jù)
//示例下拉框數(shù)據(jù) this.userList = [{ chr_code: "001001051", chr_id: "9853", chr_name: "張海舒", is_leaf: "1", user_type: "0", }]
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
詳解利用eventemitter2實(shí)現(xiàn)Vue組件通信
這篇文章主要介紹了詳解利用eventemitter2實(shí)現(xiàn)Vue組件通信,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11vue3.0?router路由跳轉(zhuǎn)傳參問題(router.push)
這篇文章主要介紹了vue3.0?router路由跳轉(zhuǎn)傳參問題(router.push),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02詳解如何在Vue3使用<script lang=“ts“ setup>語法糖
本文主要介紹了在Vue3使用<script lang=“ts“ setup>語法糖,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06vue實(shí)現(xiàn)tab標(biāo)簽(標(biāo)簽超出自動(dòng)滾動(dòng))
當(dāng)創(chuàng)建的tab標(biāo)簽超出頁面可視區(qū)域時(shí)自動(dòng)滾動(dòng)一個(gè)tab標(biāo)簽距離,并可手動(dòng)點(diǎn)擊滾動(dòng)tab標(biāo)簽,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-05-05vue中axios防止多次觸發(fā)終止多次請(qǐng)求的示例代碼(防抖)
這篇文章主要介紹了vue中axios防止多次觸發(fā)終止多次請(qǐng)求的實(shí)現(xiàn)方法(防抖),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-02-02