在使用 elementUI 的 el-cascader 级联选择框进行省市联动效果时,有这么一个需求:该级联选择框一共有三级结构分别为国家-省份-城市,国家和省份为必选项,城市为可选项。具体实现如下:

el-cascader 设置最后一级可选

  1. 可通过 props.checkStrictly = true 来设置父子节点取消选中关联,从而达到选择任意一级选项的目的
  2. 通过为第一级选项内容设置 disabled 属性,从而就实现了需求。

**通过循环源数据,找到第一级选项内容,为其设置 disabled 属性为 true **

  // 设置级联选择框第一级数据禁止选中,循环一次即可
setCascaderDisabled (cityOptions) {
cityOptions.forEach(item => {
item.disabled = true
})
}

上述内容即可实现基本需求,但是感觉这个el-cascader 还有一些小问题:

  • 点击圆圈后理想是自动收起下拉,但是没有这样的效果
  • 只能点击圆圈才能选中,点击文字 label 没有效果

点击圆圈后自动收起下拉

设置每次监听值变化的时候,把 dropDownVisible 属性设置为 false 即可。

  watch: {
// handlerValue 就是存放选中地区的数组
handlerValue() {
if (this.$refs.refHandle) {
this.$refs.refHandle.dropDownVisible = false; //监听值发生变化就关闭它
}
}
}

点击文字 label 显示选中

方法一:这种比较耗性能,但能实现效果了。

   mounted() {
//点击文本就让它自动点击前面的input就可以触发选择。但是因组件阻止了冒泡,暂时想不到好方法来触发。
setInterval(function() {
document.querySelectorAll(".el-cascader-node__label").forEach(el => {
el.onclick = function() {
if (this.previousElementSibling) this.previousElementSibling.click();
};
});
}, 1000);
}

方法二:方法一的改进,性能上有一定的优化

<el-cascader
省略。。。。。。
ref="elcascader"
@visible-change="elCascaderOnlick"
@expand-change="elCascaderOnlick"
></el-cascader> elCascaderOnlick() {
let that = this;
setTimeout(function() {
document.querySelectorAll(".el-cascader-node__label").forEach(el => {
el.onclick = function() {
this.previousElementSibling.click();
that.$refs.elcascader.dropDownVisible = false;
};
});
document
.querySelectorAll(".el-cascader-panel .el-radio")
.forEach(el => {
el.onclick = function() {
that.$refs.elcascader.dropDownVisible = false;
};
});
}, 100);
}

隐藏小圆点

小圆点有点丑,使用css隐藏。如果不生效,可以参考如何修改element UI默认样式

.el-radio {
color: #606266;
cursor: pointer;
visibility: hidden; // 加上这一行
margin-right: 30px;
}

参考文章:

https://www.cnblogs.com/steamed-twisted-roll/p/11744020.html

https://blog.csdn.net/qq_36747046/article/details/107159698

https://blog.csdn.net/fuhegegnw/article/details/106760978

ElementUI 级联选择框 设置最后一级可选及相关问题解决的更多相关文章

  1. elementUI 级联选择框 表单验证

    今天遇到了一个需求:进行级联选择框的表单验证,突然有点懵逼.感觉应该和正常的表单验证类似,但不是很清晰,后来还是在博客园找到了相关参考文章. 先上代码: <el-form :model=&quo ...

  2. Excel 名称管理器是什么,并实现一个级联选择框

    名称 在 Excel 中,每一个单元格都有自己的名称.表格横向是字母,纵向是数字,组合起来就是一个单元格的名称. A13 所代表的是 A 列,13 行的单元格.把一组单元格组合起来,加上一个名称,在 ...

  3. Ajax级联选择框

    Ajax级联选择框 级联选择框常用与比较负责的网页开发,例如实现的商品添加页面中,需要选择商品的分类,而分类信息又有层次,例如大分类和小分类就是两层级联,在用户选择商品所属大类时,所属小类的内容需要根 ...

  4. Js异步级联选择框实践方法

    HTML: <li> <span>所在地区:</span> <select name="prov" id="ddl_prov&q ...

  5. 前端插件之Bootstrap Switch 选择框开关控制

    简介 Bootstrap Switch是一款轻量级插件,可以给选择框设置类似于开关的样式 它是依赖于Bootstrap的一款插件 下载 下载地址 在线引用 导入 因为它是依赖于Bootstrap的一款 ...

  6. 前端基础(十):Bootstrap Switch 选择框开关控制

    简介 Bootstrap Switch是一款轻量级插件,可以给选择框设置类似于开关的样式 它是依赖于Bootstrap的一款插件 下载 下载地址 在线引用 导入 因为它是依赖于Bootstrap的一款 ...

  7. ElementUI表格行编辑单元格编辑支持(输入框,选择框)Demo

    嗯,需要做成这个样子,所以网上查了些资料.整理了下.提供几个一个思路.不足之处请小伙伴指出来.  普通版的table可编辑内嵌select选择框,输出框,编辑删除添加等 <!DOCTYPE ht ...

  8. 转:zTree树控件入门之checkbox:如何动态设置节点的checkbox选择框启用与禁用状态(chkDisabled)

    当一棵树的部分节点根据登入用户角色不同而决定是否启用节点前的checkbox选择框的时候,我们应该如何做呢?也或者如何在页面加载的时候动态根据当前登入用户角色动态切换节点前的checkbox的禁用状态 ...

  9. combobox级联检索下拉选择框

    1.效果图 2.前端 @{ ViewBag.Title = "Index"; Layout = null; @*自动筛选下拉框*@ <script src="~/S ...

随机推荐

  1. 微信小程序入门基础

    微信小程序入门基础  视频教程(https://edu.csdn.net/course/detail/8456?pre_view=1) 第一章.认识小程序  1.工具的下载与安装  2.小程序代码构成 ...

  2. StringEscapeUtils防止xss攻击详解

    StringUtils和StringEscapeUtils这两个实用类. 1.转义防止xss攻击 1.转义可以分为下面的几种情况 第一用户输入特殊字符的时候,在提及的时候不做任何处理保持到数据库,当用 ...

  3. JavaWeb网上图书商城完整项目--day02-20.修改密码各层实现

    1.我们来看看后台操作的业务流程 每一层都按照上面的步骤来进行实现: 这里我们要使用commUtils.toBean把表单提交的参数封装成User对象,必须保证User对象中的字段和表单提交的字段的名 ...

  4. Python3-socket模块-低级网络接口

    Python3中的socket模块提供了对访问套接字(socket)的接口 socket可以理解为是一个管道,通过这个管道可以使两个不同的程序通过网络进行通信,在Python中的scoket()函数可 ...

  5. SpringBoot--日期格式化

    1.为了统一转转,可以使用日期格式化类 package com.example.demo.resource; import com.fasterxml.jackson.datatype.jsr310. ...

  6. webpack4.*入门笔记

    全是跟着示例做的.看下面文章 入门 1.nodejs基础 http://www.runoob.com/nodejs/nodejs-tutorial.html 2.NPM 学习笔记整理 https:// ...

  7. 前端笔记(关于webpack打包时内存溢出问题的解决)

    首先安装increase-memory-limit cnpm install -g increase-memory-limit 重启cmd,并在项目跟目录中运行一下 increase-memory-l ...

  8. ASP.NET MVC 下拉框的传值的两种方式(第二种方式未完成)

    控制器代码: public ActionResult Index() { List<SelectListItem> sli = new List<SelectListItem> ...

  9. 一个神奇的SQL语句

    题目是这样的: 分别往这两张表中添加3条数据... 查询营业额最高商家的商品总价与营业额最低商家的商品总价差是多少(5分)CREATE VIEW vm2 AS SELECT price*limit_n ...

  10. HTTPS加密协议详解(一):HTTPS基础知识

    转自:https://blog.csdn.net/hherima/article/details/52469267------------------------------专栏导航:-------- ...