el-select 如何实现 readonly 效果
时间: 2023-10-14 16:28:16 浏览: 477
要实现 `el-select` 的 readonly 效果,可以通过以下两种方式之一:
1. 使用 `el-select` 的 `disabled` 属性,将其设置为 `true`,然后在 CSS 中添加样式覆盖默认的禁用样式。
```html
<el-select disabled class="readonly-select" v-model="value">
<el-option label="选项一" value="1"></el-option>
<el-option label="选项二" value="2"></el-option>
<el-option label="选项三" value="3"></el-option>
</el-select>
```
```css
.readonly-select .el-input__inner {
cursor: not-allowed;
}
```
2. 自定义 `el-select` 的模板,并在模板中禁用选择框的交互事件。
```html
<template>
<el-select v-model="value">
<div class="el-input el-input--suffix readonly-select">
<input class="el-input__inner" type="text" :value="selectedLabel" readonly>
<span class="el-input__suffix">
<i class="el-input__icon el-icon-arrow-up"></i>
</span>
</div>
<el-option label="选项一" value="1"></el-option>
<el-option label="选项二" value="2"></el-option>
<el-option label="选项三" value="3"></el-option>
</el-select>
</template>
<script>
export default {
data() {
return {
value: '',
};
},
computed: {
selectedLabel() {
const selectedOption = this.$refs.select.selected;
return selectedOption ? selectedOption.currentLabel : '';
},
},
mounted() {
// 禁用选择框的交互事件
this.$refs.select.$el.querySelector('.el-input__inner').addEventListener('mousedown', (event) => {
event.preventDefault();
});
},
};
</script>
```
以上两种方式都可以实现 `el-select` 的 readonly 效果,具体选择哪种方式取决于你的需求和实际情况。
阅读全文