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

實現(xiàn)代碼
<template>
<div>
<h1>標記有誤/取消標記有誤:</h1>
<el-button @click="() => onMarkError(['markField', 'mustAndMarkField'])">
將第二個和最后一個標記有誤
</el-button>
<el-button @click="() => onMarkError(['markField'])"
>將第二個標記有誤</el-button
>
<el-button @click="() => onMarkError(['mustAndMarkField'])"
>將最后一個標記有誤</el-button
>
<el-button
@click="() => onCancelMarkError(['markField', 'mustAndMarkField'])"
>
取消第二個和最后一個標記有誤
</el-button>
<el-button @click="() => onCancelMarkError(['markField'])">
取消第二個標記有誤
</el-button>
<el-button @click="() => onCancelMarkError(['mustAndMarkField'])">
取消最后一個標記有誤
</el-button>
<el-button type="primary" @click="onSubmit">提交表單</el-button>
<el-button-group>
<el-button @click="() => onChangeModel('hasValuePassMarkError')"
>只要有值則標記有誤驗證通過</el-button
>
<el-button @click="() => onChangeModel('ignoreMarkError')">
不執(zhí)行標記有誤驗證</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="標記有誤字段"
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="必填且標記有誤字段"
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 {
/**
* 標記有誤驗證方法執(zhí)行模式:
* hasValuePassMarkError:只要有值,則通過驗證,否則不通過驗證
* ignoreMarkError: 一律通過
*/
onChangeModel: "hasValuePassMarkError",
// 表單數(shù)據(jù)
formData: {
mustField: null,
markField: null,
normalField: null,
mustAndMarkField: null,
},
// 存放標記有誤數(shù)據(jù)的對象
markErrorData: null,
// 自定義驗證規(guī)則:驗證是否存在標記有誤數(shù)據(jù),如果存在,則將標記有誤數(shù)據(jù),顯示為錯誤數(shù)據(jù)
validateMarkError(rule, value, callback, fieldName) {
if (this.onChangeModel === "ignoreMarkError") {
// 一律通過
return callback();
}
if (this.markErrorData && this.markErrorData[fieldName]) {
// 當前驗證字段存在標記有誤信息
if (this.onChangeModel === "hasValuePassMarkError") {
if (value) {
// 只要有值則通過
return callback();
} else {
// 沒值,不通過
return callback(new Error(this.markErrorData[fieldName]));
}
}
}
return callback();
},
// 測試不同的驗證規(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: "驗證通過",
type: "success",
});
} else {
this.$message({
message: "表單數(shù)據(jù)驗證失敗",
type: "error",
});
}
});
},
// 手動刪除錯誤提示信息
onCancelMarkError(cancelMarkErrorPropArr) {
if (!this.markErrorData) {
this.markErrorData = {};
}
cancelMarkErrorPropArr.forEach((fieldName) => {
this.$set(this.markErrorData, fieldName, null);
});
this.$refs.formDataRef.clearValidate(cancelMarkErrorPropArr);
},
// 手動添加錯誤提示信息
onMarkError(markErrorPropArr) {
if (!this.markErrorData) {
this.markErrorData = {};
}
markErrorPropArr.forEach((fieldName) => {
this.$set(
this.markErrorData,
fieldName,
`對字段 ${fieldName} 標記有誤`
);
});
this.$refs.formDataRef.validateField(markErrorPropArr);
},
},
};
</script>
<style scoped lang="scss">
.js-validate-form ::v-deep(.is-error .o-show-data) {
color: red;
}
</style>到此這篇關于el-form錯誤提示信息手動添加和取消的文章就介紹到這了,更多相關el-form錯誤提示信息內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Elementui如何限制el-input框輸入小數(shù)點
這篇文章主要介紹了Elementui如何限制el-input框輸入小數(shù)點,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-08-08
Vue3視頻播放器組件Vue3-video-play新手入門教程
這篇文章主要給大家介紹了關于Vue3視頻播放器組件Vue3-video-play新手入門教程的相關資料,本文實例為大家分享了vue-video-player視頻播放器的使用配置,供大家參考,需要的朋友可以參考下2023-12-12
理解Vue2.x和Vue3.x自定義指令用法及鉤子函數(shù)原理
這篇文章主要介紹了理解Vue2.x和Vue3.x的自定義指令的用法及鉤子函數(shù)原理,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2021-09-09
vue單頁應用在頁面刷新時保留狀態(tài)數(shù)據(jù)的方法
今天小編就為大家分享一篇vue單頁應用在頁面刷新時保留狀態(tài)數(shù)據(jù)的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-09-09

