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)文章
Elementui如何限制el-input框輸入小數(shù)點(diǎn)
這篇文章主要介紹了Elementui如何限制el-input框輸入小數(shù)點(diǎn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-08-08
vue數(shù)組動(dòng)態(tài)刷新失敗問(wèn)題及解決
這篇文章主要介紹了vue數(shù)組動(dòng)態(tài)刷新失敗問(wèn)題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-03-03
Vue3視頻播放器組件Vue3-video-play新手入門(mén)教程
這篇文章主要給大家介紹了關(guān)于Vue3視頻播放器組件Vue3-video-play新手入門(mén)教程的相關(guān)資料,本文實(shí)例為大家分享了vue-video-player視頻播放器的使用配置,供大家參考,需要的朋友可以參考下2023-12-12
解決新建一個(gè)vue項(xiàng)目過(guò)程中遇到的問(wèn)題
這篇文章主要介紹了解決新建一個(gè)vue項(xiàng)目過(guò)程中遇到的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-10-10
vue中的base64圖片轉(zhuǎn)網(wǎng)絡(luò)URL方式
在Vue中,可以直接將Base64編碼的圖片賦值給img元素的src屬性,此外,也可以通過(guò)JavaScript的URL.createObjectURL()方法將Base64轉(zhuǎn)換為Blob URL,進(jìn)而轉(zhuǎn)換為File對(duì)象,并可進(jìn)一步轉(zhuǎn)換為PNG或其他格式的圖片,這種轉(zhuǎn)換技術(shù)在前端開(kāi)發(fā)中非常實(shí)用2024-10-10
理解Vue2.x和Vue3.x自定義指令用法及鉤子函數(shù)原理
這篇文章主要介紹了理解Vue2.x和Vue3.x的自定義指令的用法及鉤子函數(shù)原理,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2021-09-09
vue單頁(yè)應(yīng)用在頁(yè)面刷新時(shí)保留狀態(tài)數(shù)據(jù)的方法
今天小編就為大家分享一篇vue單頁(yè)應(yīng)用在頁(yè)面刷新時(shí)保留狀態(tài)數(shù)據(jù)的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-09-09

