Element input树型下拉框的实现代码


Posted in Javascript onDecember 21, 2018

1.效果图

1.1 input聚焦时显示下拉框,再次点击下拉框或点击其他处下拉框消失,主要靠z-index添加遮罩实现

Element input树型下拉框的实现代码

1.2 实时过滤效果

Element input树型下拉框的实现代码

2.代码 ( vue.js + element-ui )

2.1 html

<el-form :model="form" size="mini" >
     <el-row>
      <el-col :span='12'>
        <el-form-item label="会计主管" >
         <el-input 
              placeholder="请选择会计主管" 
              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="暂无数据"
             :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,// 是否显示会计主管的树状选择器
   userlist: [],// 会计主管的选项数据 
   defaultProps: { // 会计主管 树状选择器 的选项的配置参数
    children: 'children',
    label: 'code_name',
   },
  }
 },
 watch: {
  form: {//form.MANAGER_NAME变化时过滤节点
    handler(form){
     if(this.isShowSelect){
      this.$refs.selectTree.filter(form.MANAGER_NAME);
     }
    },
    deep: true,//深度监听,重要
  },
 },
 methods:{
    //下拉框的显示与隐藏
    changeSelectTree(){
      this.isShowSelect = !this.isShowSelect;
    },
    //input获取焦点事件,初始化树
    async focus(e) {
      let vm = this;
      vm.$refs.selectTree.filter("");
      vm.$refs.selectTree.setCurrentNode([]);
     },
    // 选择器的树节点
    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;
    },
    //选择会计主管
    selectManage(data, Node) {
     this.form.MANAGER_NAME = data.code_name;//input赋值
     this.form.MANAGER_ID = data.chr_id;
     this.isShowSelect = false;// 关闭选择器
    }, 
    //点击遮罩层,取消选择会计主管
    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 参考数据

//示例下拉框数据
this.userList = [{
 chr_code: "001001051",
 chr_id: "9853",
 chr_name: "张海舒",
 is_leaf: "1",
 user_type: "0",
}]

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript去除空格的几种方法
Oct 03 Javascript
用js实现下载远程文件并保存在本地的脚本
May 06 Javascript
ext form 表单提交数据的方法小结
Aug 08 Javascript
读jQuery之五(取DOM元素)
Jun 20 Javascript
用jQuery实现的智能隐藏、滑动效果的返回顶部代码
Mar 18 Javascript
javascript关于open.window子页面执行完成后刷新父页面的问题分析
Apr 27 Javascript
详解AngularJS中自定义指令的使用
Jun 17 Javascript
js编写的treeview使用方法
Nov 11 Javascript
seajs模块压缩问题与解决方法实例分析
Oct 10 Javascript
Vue中插入HTML代码的方法
Sep 21 Javascript
Element实现表格分页数据选择+全选所有完善批量操作
Jun 07 Javascript
ES6函数和数组用法实例分析
May 23 Javascript
傻瓜式vuex语法糖kiss-vuex整理
Dec 21 #Javascript
vue项目设置scrollTop不起作用(总结)
Dec 21 #Javascript
浅谈Vue服务端渲染框架Nuxt的那些事
Dec 21 #Javascript
JS二级菜单不同实现方法分析【4种方法】
Dec 21 #Javascript
vue中eslintrc.js配置最详细介绍
Dec 21 #Javascript
angularjs http与后台交互的实现示例
Dec 21 #Javascript
JS执行控制之节流模式实例分析
Dec 21 #Javascript
You might like
web方式ftp
2006/10/09 PHP
PHP多进程编程总结(推荐)
2016/07/18 PHP
PHP实现小偷程序实例
2016/10/31 PHP
PHP hex2bin()函数用法讲解
2019/02/25 PHP
PhpStorm 2020.3:新增开箱即用的PHP 8属性(推荐)
2020/10/30 PHP
showModalDialog 和 showModelessDialog
2007/01/22 Javascript
jquery 页面全选框实践代码
2010/04/02 Javascript
div浮层,滚动条移动,位置保持不变的4种方法汇总
2013/12/11 Javascript
Javascript让DEDECMS告别手写Tag
2014/09/01 Javascript
分享20个提升网站界面体验的jQuery插件
2014/12/15 Javascript
js获取微信版本号的方法
2015/05/12 Javascript
javascript实现列表切换效果
2016/05/02 Javascript
Node.js 数据加密传输浅析
2016/11/16 Javascript
javascript中的try catch异常捕获机制用法分析
2016/12/14 Javascript
浅谈Vue组件及组件的注册方法
2018/08/24 Javascript
React项目动态设置title标题的方法示例
2018/09/26 Javascript
js用正则表达式筛选年月日的实例方法
2021/01/04 Javascript
Element-ui 自带的两种远程搜索(模糊查询)用法讲解
2021/01/29 Javascript
django 修改server端口号的方法
2018/05/14 Python
Python使用进程Process模块管理资源
2020/03/05 Python
python中读入二维csv格式的表格方法详解(以元组/列表形式表示)
2020/04/24 Python
Jupyter notebook如何修改平台字体
2020/05/13 Python
Python如何转换字符串大小写
2020/06/04 Python
keras 使用Lambda 快速新建层 添加多个参数操作
2020/06/10 Python
HTML5+CSS3:3D展示商品信息示例
2017/01/03 HTML / CSS
澳大利亚领先的宠物用品商店:VetSupply
2017/09/08 全球购物
介绍一下gcc特性
2012/01/20 面试题
计算机应用毕业生自荐信
2013/10/23 职场文书
影视制作岗位职责
2013/12/04 职场文书
大学生村官典型材料
2014/01/12 职场文书
模范家庭事迹材料
2014/02/10 职场文书
学校工会工作总结2015
2015/05/19 职场文书
单位考核鉴定意见
2015/06/05 职场文书
闪闪红星观后感
2015/06/08 职场文书
诚信教育主题班会
2015/08/13 职场文书
关于企业的执行力标语大全
2020/01/06 职场文书