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-04vue項(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