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 相关文章推荐
js一组验证函数
Dec 20 Javascript
js控制frameSet示例
Sep 10 Javascript
Node.js编程中客户端Session的使用详解
Jun 23 Javascript
jQuery中$.extend()用法实例
Jun 24 Javascript
JavaScript中的对象和原型(一)
Aug 12 Javascript
nginx+vue.js实现前后端分离的示例代码
Feb 12 Javascript
Javascript实现购物车功能的详细代码
May 08 Javascript
JS中使用react-tooltip插件实现鼠标悬浮显示框
May 15 Javascript
《javascript设计模式》学习笔记七:Javascript面向对象程序设计组合模式详解
Apr 08 Javascript
vue使用axios实现excel文件下载的功能
Jul 16 Javascript
使用eslint和githooks统一前端风格的技巧
Jul 29 Javascript
vue-quill-editor插入图片路径太长问题解决方法
Jan 08 Vue.js
傻瓜式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
PHP中可以自动分割查询字符的Parse_str函数使用示例
2014/07/25 PHP
又拍云异步上传实例教程详解
2016/04/19 PHP
如何使用HTML5地理位置定位功能
2015/04/27 Javascript
JavaScript中继承用法实例分析
2015/05/16 Javascript
Jquery实现动态切换图片的方法
2015/05/18 Javascript
初步使用Node连接Mysql数据库
2016/03/03 Javascript
原生javascript实现的一个简单动画效果
2016/03/30 Javascript
yarn与npm的命令行小结
2016/10/20 Javascript
Angular的$http的ajax的请求操作(推荐)
2017/01/10 Javascript
详解vue嵌套路由-query传递参数
2017/05/23 Javascript
web3.js增加eth.getRawTransactionByHash(txhash)方法步骤
2018/03/15 Javascript
Node.js JSON模块用法实例分析
2019/01/04 Javascript
JSON是什么?有哪些优点?JSON和XML的区别?
2019/04/29 Javascript
javascript中可能用得到的全部的排序算法
2020/03/05 Javascript
Python实现的Kmeans++算法实例
2014/04/26 Python
Tensorflow之Saver的用法详解
2018/04/23 Python
Python 通配符删除文件的实例
2018/04/24 Python
对python3 中方法各种参数和返回值详解
2018/12/15 Python
python自定义线程池控制线程数量的示例
2019/02/22 Python
Python爬虫 批量爬取下载抖音视频代码实例
2019/08/16 Python
django删除表重建的实现方法
2019/08/28 Python
使用Python实现正态分布、正态分布采样
2019/11/20 Python
python中 _、__、__xx__()区别及使用场景
2020/06/30 Python
python GUI计算器的实现
2020/10/09 Python
FC-Moto瑞典:欧洲最大的摩托车服装和头盔商店之一
2018/11/27 全球购物
招标承诺书
2014/08/30 职场文书
声乐专业大学生职业生涯规划书:理想的未来需要自己去打造
2014/09/20 职场文书
2014年“世界无车日”活动方案
2014/09/21 职场文书
开展党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
营销与策划实训报告
2014/11/05 职场文书
优秀共青团员事迹材料
2014/12/25 职场文书
2015社区六五普法工作总结
2015/04/21 职场文书
办公室禁烟通知
2015/04/23 职场文书
幽灵公主观后感
2015/06/09 职场文书
鲁冰花观后感
2015/06/10 职场文书
SQLServer中JSON文档型数据的查询问题解决
2021/06/27 SQL Server