在使用 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. 一对多分页的SQL到底应该怎么写?

    1. 前言 MySQL一对多的数据分页是非常常见的需求,比如我们要查询商品和商品的图片信息.但是很多人会在这里遇到分页的误区,得到不正确的结果.今天就来分析并解决这个问题. 2. 问题分析 我们先创建 ...

  2. robot framework使用小结(一)

    项目组要用到robot framework验收web,因此花了两天时间了解了一下这个框架.我把网上各位大侠分享的内容整理成一个小小demo,参考的出处没有列出来,在此一并感谢各位. demo仍旧是打开 ...

  3. EDM邮件制作

    EDM营销(Email Direct Marketing)也叫:Email营销.电子邮件营销.是指企业向目标客户发送EDM邮件,建立同目标顾客的沟通渠道,向其直接传达相关信息,用来促进销售的一种营销手 ...

  4. 树形dp——三色二叉树

    题目描述 一棵二叉树可以按照如下规则表示成一个由0.1.2组成的字符序列,我们称之为"二叉树序列S": 0 该树没有子节点 1S1 该树有一个子节点,S1为其二叉树序列 1S1S2 ...

  5. 自动化测试平台(Vue前端框架安装配置)

    Vue简介: 通俗的来说Vue是前端框架,用来写html的框架,可轻量级也可不轻量级 Vue特性: 绑定性,响应性,实时性,组件性 安装软件以及控件: 控件库:element-ui node.js ( ...

  6. js返回上一页并刷新思路

    在网上找了很多办法,比如window.history.go(-1):window.history.go(0): 试了下根本没用(不知道是不是我哪里写错了),想着在上一个页面写一个关闭页面并刷新的方法, ...

  7. css3 文本行的斑马线

    背景知识 CSS 渐变, background-size ,“条纹背景”,“灵活的背景定位 难题 几年前,在刚刚获得 :nth-child() / :nth-of-type() 伪类之后,我们最常用其 ...

  8. day35 socket套接字介绍

    目录 一.套接字发展史与分类 二.套接字工作流程 三.基于tcp的套接字 一.套接字发展史与分类 套接字起源于 20 世纪 70 年代加利福尼亚大学伯克利分校版本的 Unix,即人们所说的 BSD U ...

  9. spring-boot 应用 报错 No qualifying bean of type XXXXX.***Mapper

    报错类型 NoSuchBeanDefinitionException.No qualifying bean of type  XXXXX.***Mapper 报错信息详情 Caused by: org ...

  10. 【XCTF】ics-04

    信息: 题目来源:XCTF 4th-CyberEarth 标签:PHP.SQL注入 题目描述:工控云管理系统新添加的登录和注册页面存在漏洞,请找出flag 解题过程 进入注册页面,尝试注册: 进行登录 ...