el-form錯誤提示信息手動添加和取消的示例代碼
需求
對表單填寫字段進行標記有誤和取消標記有誤
方案
最新想到的方案 推薦
定義一個存放錯誤信息的對象,然后再自定義一個驗證規(guī)則,在這個驗證規(guī)則中,通過當前驗證字段的prop值,到存放錯誤信息的對象中獲取對應(yīng)的錯誤提示文案,如果獲取到了,則說明,該字段存在標記有誤,則讓驗證不通過,反之,則讓驗證通過
運行效果:
實現(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>
到此這篇關(guān)于el-form錯誤提示信息手動添加和取消的文章就介紹到這了,更多相關(guān)el-form錯誤提示信息內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
解決vue項目中出現(xiàn)Invalid Host header的問題
這篇文章主要介紹了解決vue項目中出現(xiàn)"Invalid Host header"的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-11-11使用Vue如何寫一個雙向數(shù)據(jù)綁定(面試常見)
這篇文章主要介紹了使用Vue如何寫一個雙向數(shù)據(jù)綁定,在前端面試過程中經(jīng)常會問到,文中主要實現(xiàn)v-model,v-bind 和v-click三個命令,其他命令也可以自行補充。需要的朋友可以參考下2018-04-04vue項目index.html中使用環(huán)境變量的代碼示例
在Vue3中使用環(huán)境變量的方式與Vue2基本相同,下面這篇文章主要給大家介紹了關(guān)于vue項目index.html中使用環(huán)境變量的相關(guān)資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下2024-02-02