在Vue 3中使用el-input
和el-select
组件进行非空判断,并在非div
标签上显示红色边框,可以通过以下几种方法实现:
1. 使用表单验证
使用Element Plus的表单验证功能,可以很方便地实现非空判断。你可以将el-input
和el-select
放入el-form-item
中,并使用rules
属性来定义验证规则。
<template>
<el-form :model="form" :rules="rules" ref="formRef">
<el-form-item label="用户名" prop="username">
<el-input v-model="form.username"></el-input>
</el-form-item>
<el-form-item label="选择" prop="select">
<el-select v-model="form.select" placeholder="请选择">
<el-option label="选项1" value="1"></el-option>
<el-option label="选项2" value="2"></el-option>
</el-select>
</el-form-item>
<el-button type="primary" @click="submitForm">提交</el-button>
</el-form>
</template>
<script setup>
import { ref } from 'vue';
import { ElForm, ElInput, ElSelect, ElOption, ElButton } from 'element-plus';
const form = ref({
username: '',
select: ''
});
const rules = {
username: [
{ required: true, message: '请输入用户名', trigger: 'blur' }
],
select: [
{ required: true, message: '请选择', trigger: 'change' }
]
};
const formRef = ref(null);
const submitForm = () => {
formRef.value.validate((valid) => {
if (valid) {
alert('提交成功!');
} else {
console.log('表单验证失败');
return false;
}
});
};
</script>
2. 自定义CSS样式进行非空判断显示红色边框
如果你想要在非空验证失败时,直接在输入框或选择框上显示红色边框,可以通过动态绑定class来实现。例如:
<template>
<div>
<el-input v-model="username" :class="{ 'is-error': !username }"></el-input>
<el-select v-model="selected" placeholder="请选择" :class="{ 'is-error': !selected }">
<el-option label="选项1" value="1"></el-option>
<el-option label="选项2" value="2"></el-option>
</el-select>
</div>
</template>
<script setup>
import { ref } from 'vue';
import { ElInput, ElSelect, ElOption } from 'element-plus';
const username = ref('');
const selected = ref('');
</script>
<style>
.is-error .el-input__inner, .is-error .el-select .el-input__inner {
border-color: red; /* 设置红色边框 */
}
</style>
3. 使用CSS伪类进行动态样式控制(更灵活)
为了使样式更加灵活,可以结合JavaScript来动态添加或移除类:
<template>
<div>
<el-input v-model="username" :class="{ 'is-error': !username }" @blur="validateInput"></el-input>
<el-select v-model="selected" placeholder="请选择" :class="{ 'is-error': !selected }" @change="validateSelect"></el-select>
</div>
</template>
<script setup>
import { ref } from 'vue';
import { ElInput, ElSelect, ElOption } from 'element-plus';
import { nextTick } from 'vue'; // 用于等待DOM更新完成后再添加类名或移除类名。
const username = ref('');
const selected = ref('');
const validateInput = () => { nextTick(() => { if (!username.value) document.querySelector('.is-error .el-input__inner').classList.add('red-border'); }); }; // 添加红色