ElementUI 级联选择框 设置最后一级可选及相关问题解决
在使用 elementUI 的 el-cascader 级联选择框进行省市联动效果时,有这么一个需求:该级联选择框一共有三级结构分别为国家-省份-城市,国家和省份为必选项,城市为可选项。具体实现如下:
el-cascader 设置最后一级可选
- 可通过
props.checkStrictly = true
来设置父子节点取消选中关联,从而达到选择任意一级选项的目的 - 通过为第一级选项内容设置
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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!