<template> <div> <el-input v-model="inputValue" :class="{ 'is-invalid': isInputInvalid }" placeholder="请输入内容" @blur="validateInput" ></el-input> <span v-if="isInputInvalid" class="error-message">{{ inputErrorMessage }}</span> <el-button type="primary" @click="submitForm">提交</el-button> </div> </template> <script> export default { data() { return { inputValue: '', isInputInvalid: false, inputErrorMessage: '' }; }, methods: { validateInput() { // 根据自定义的校验规则进行校验 if (this.inputValue === '') { this.isInputInvalid = true; this.inputErrorMessage = '内容不能为空'; } else if (this.inputValue.length < 5 || this.inputValue.length > 10) { this.isInputInvalid = true; this.inputErrorMessage = '内容长度应在 5 到 10 之间'; } else { this.isInputInvalid = false; this.inputErrorMessage = ''; } }, submitForm() { // 在提交表单时再次触发校验,确保校验结果 this.validateInput(); // 如果校验通过,则进行后续的表单提交操作 if (!this.isInputInvalid) { // 表单提交操作 } }, closeDialog() { // 关闭dialog // 重置表单数据和校验历史 this.appname = ''; this.isInputInvalid = false; this.inputErrorMessage = ''; }, } }; </script> <style> .error-message { color: red; } .is-invalid .el-input__inner { border-color: red; } </style>