有时候我们需求只需要对一个input进行校验,el-form的校验需要定义各种规则,然后prop,所以干脆放弃el-form的校验,直接手搓一个校验即可.同样的思路应该也可以用于普通的input, 见下方代码
<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() {
this.appname = '';
this.isInputInvalid = false;
this.inputErrorMessage = '';
},
}
};
</script>
<style>
.error-message {
color: red;
}
.is-invalid .el-input__inner {
border-color: red;
}
</style>