el-form錯(cuò)誤提示信息手動(dòng)添加和取消的示例代碼
需求
對(duì)表單填寫(xiě)字段進(jìn)行標(biāo)記有誤和取消標(biāo)記有誤
方案
最新想到的方案 推薦
定義一個(gè)存放錯(cuò)誤信息的對(duì)象,然后再自定義一個(gè)驗(yàn)證規(guī)則,在這個(gè)驗(yàn)證規(guī)則中,通過(guò)當(dāng)前驗(yàn)證字段的prop值,到存放錯(cuò)誤信息的對(duì)象中獲取對(duì)應(yīng)的錯(cuò)誤提示文案,如果獲取到了,則說(shuō)明,該字段存在標(biāo)記有誤,則讓驗(yàn)證不通過(guò),反之,則讓驗(yàn)證通過(guò)
運(yùn)行效果:

實(shí)現(xiàn)代碼
<template>
<div>
<h1>標(biāo)記有誤/取消標(biāo)記有誤:</h1>
<el-button @click="() => onMarkError(['markField', 'mustAndMarkField'])">
將第二個(gè)和最后一個(gè)標(biāo)記有誤
</el-button>
<el-button @click="() => onMarkError(['markField'])"
>將第二個(gè)標(biāo)記有誤</el-button
>
<el-button @click="() => onMarkError(['mustAndMarkField'])"
>將最后一個(gè)標(biāo)記有誤</el-button
>
<el-button
@click="() => onCancelMarkError(['markField', 'mustAndMarkField'])"
>
取消第二個(gè)和最后一個(gè)標(biāo)記有誤
</el-button>
<el-button @click="() => onCancelMarkError(['markField'])">
取消第二個(gè)標(biāo)記有誤
</el-button>
<el-button @click="() => onCancelMarkError(['mustAndMarkField'])">
取消最后一個(gè)標(biāo)記有誤
</el-button>
<el-button type="primary" @click="onSubmit">提交表單</el-button>
<el-button-group>
<el-button @click="() => onChangeModel('hasValuePassMarkError')"
>只要有值則標(biāo)記有誤驗(yàn)證通過(guò)</el-button
>
<el-button @click="() => onChangeModel('ignoreMarkError')">
不執(zhí)行標(biāo)記有誤驗(yàn)證</el-button
>
</el-button-group>
<el-form :model="formData" ref="formDataRef">
<el-form-item
label="必填字段"
prop="mustField"
:rules="formDataRule.mustField"
>
<el-input v-model="formData.mustField"></el-input>
</el-form-item>
<el-form-item
label="標(biāo)記有誤字段"
prop="markField"
:rules="formDataRule.markField"
>
<el-input v-model="formData.markField"></el-input>
</el-form-item>
<el-form-item
label="普通字段"
prop="normalField"
:rules="formDataRule.normalField"
>
<el-input v-model="formData.normalField"></el-input>
</el-form-item>
<el-form-item
label="必填且標(biāo)記有誤字段"
prop="mustAndMarkField"
:rules="formDataRule.mustAndMarkField"
>
<el-input v-model="formData.mustAndMarkField"></el-input>
</el-form-item>
</el-form>
</div>
</template>
<script>
export default {
name: "StyleTextPage",
components: {},
data() {
return {
/**
* 標(biāo)記有誤驗(yàn)證方法執(zhí)行模式:
* hasValuePassMarkError:只要有值,則通過(guò)驗(yàn)證,否則不通過(guò)驗(yàn)證
* ignoreMarkError: 一律通過(guò)
*/
onChangeModel: "hasValuePassMarkError",
// 表單數(shù)據(jù)
formData: {
mustField: null,
markField: null,
normalField: null,
mustAndMarkField: null,
},
// 存放標(biāo)記有誤數(shù)據(jù)的對(duì)象
markErrorData: null,
// 自定義驗(yàn)證規(guī)則:驗(yàn)證是否存在標(biāo)記有誤數(shù)據(jù),如果存在,則將標(biāo)記有誤數(shù)據(jù),顯示為錯(cuò)誤數(shù)據(jù)
validateMarkError(rule, value, callback, fieldName) {
if (this.onChangeModel === "ignoreMarkError") {
// 一律通過(guò)
return callback();
}
if (this.markErrorData && this.markErrorData[fieldName]) {
// 當(dāng)前驗(yàn)證字段存在標(biāo)記有誤信息
if (this.onChangeModel === "hasValuePassMarkError") {
if (value) {
// 只要有值則通過(guò)
return callback();
} else {
// 沒(méi)值,不通過(guò)
return callback(new Error(this.markErrorData[fieldName]));
}
}
}
return callback();
},
// 測(cè)試不同的驗(yàn)證規(guī)則組合情況
formDataRule: {
mustField: [{ required: true, message: "必填" }],
markField: [
{
validator: (rule, value, callback) =>
this.validateMarkError(rule, value, callback, "markField"),
trigger: "blur",
},
],
normalField: [],
mustAndMarkField: [
{
validator: (rule, value, callback) =>
this.validateMarkError(rule, value, callback, "mustAndMarkField"),
trigger: "blur",
},
{ required: true, message: "必填" },
],
},
};
},
created() {},
methods: {
onSubmit() {
this.$refs.formDataRef.validate((ret) => {
if (ret) {
this.$message({
message: "驗(yàn)證通過(guò)",
type: "success",
});
} else {
this.$message({
message: "表單數(shù)據(jù)驗(yàn)證失敗",
type: "error",
});
}
});
},
// 手動(dòng)刪除錯(cuò)誤提示信息
onCancelMarkError(cancelMarkErrorPropArr) {
if (!this.markErrorData) {
this.markErrorData = {};
}
cancelMarkErrorPropArr.forEach((fieldName) => {
this.$set(this.markErrorData, fieldName, null);
});
this.$refs.formDataRef.clearValidate(cancelMarkErrorPropArr);
},
// 手動(dòng)添加錯(cuò)誤提示信息
onMarkError(markErrorPropArr) {
if (!this.markErrorData) {
this.markErrorData = {};
}
markErrorPropArr.forEach((fieldName) => {
this.$set(
this.markErrorData,
fieldName,
`對(duì)字段 ${fieldName} 標(biāo)記有誤`
);
});
this.$refs.formDataRef.validateField(markErrorPropArr);
},
},
};
</script>
<style scoped lang="scss">
.js-validate-form ::v-deep(.is-error .o-show-data) {
color: red;
}
</style>到此這篇關(guān)于el-form錯(cuò)誤提示信息手動(dòng)添加和取消的文章就介紹到這了,更多相關(guān)el-form錯(cuò)誤提示信息內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
解決vue項(xiàng)目中出現(xiàn)Invalid Host header的問(wèn)題
這篇文章主要介紹了解決vue項(xiàng)目中出現(xiàn)"Invalid Host header"的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-11-11
使用Vue如何寫(xiě)一個(gè)雙向數(shù)據(jù)綁定(面試常見(jiàn))
這篇文章主要介紹了使用Vue如何寫(xiě)一個(gè)雙向數(shù)據(jù)綁定,在前端面試過(guò)程中經(jīng)常會(huì)問(wèn)到,文中主要實(shí)現(xiàn)v-model,v-bind 和v-click三個(gè)命令,其他命令也可以自行補(bǔ)充。需要的朋友可以參考下2018-04-04
vue項(xiàng)目index.html中使用環(huán)境變量的代碼示例
在Vue3中使用環(huán)境變量的方式與Vue2基本相同,下面這篇文章主要給大家介紹了關(guān)于vue項(xiàng)目index.html中使用環(huán)境變量的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-02-02
一個(gè)因@click.stop引發(fā)的bug的解決
這篇文章主要介紹了一個(gè)因@click.stop引發(fā)的bug的解決,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-01-01

