欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

el-form錯誤提示信息手動添加和取消的示例代碼

 更新時間:2022年08月18日 09:51:18   作者:悟空和大王  
這篇文章主要介紹了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計算屬性原理

    詳解Vue計算屬性原理

    計算屬性是Vue中比較好用的API,開發(fā)者可以利用計算屬將復(fù)雜的計算進行緩存,同時基于它的響應(yīng)式特性,我們無需關(guān)注數(shù)據(jù)更新問題,但需要注意的是,計算屬性是惰性求值的,本文將詳細介紹計算屬性的實現(xiàn)原理,需要的朋友可以參考下
    2023-05-05
  • 解決vue項目中出現(xiàn)Invalid Host header的問題

    解決vue項目中出現(xiàn)Invalid Host header的問題

    這篇文章主要介紹了解決vue項目中出現(xiàn)"Invalid Host header"的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • Vue事件處理原理及過程詳解

    Vue事件處理原理及過程詳解

    這篇文章主要介紹了vue事件處理原理及過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-03-03
  • 使用Vue如何寫一個雙向數(shù)據(jù)綁定(面試常見)

    使用Vue如何寫一個雙向數(shù)據(jù)綁定(面試常見)

    這篇文章主要介紹了使用Vue如何寫一個雙向數(shù)據(jù)綁定,在前端面試過程中經(jīng)常會問到,文中主要實現(xiàn)v-model,v-bind 和v-click三個命令,其他命令也可以自行補充。需要的朋友可以參考下
    2018-04-04
  • vue項目index.html中使用環(huán)境變量的代碼示例

    vue項目index.html中使用環(huán)境變量的代碼示例

    在Vue3中使用環(huán)境變量的方式與Vue2基本相同,下面這篇文章主要給大家介紹了關(guān)于vue項目index.html中使用環(huán)境變量的相關(guān)資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-02-02
  • vue中的自定義分頁插件組件的示例

    vue中的自定義分頁插件組件的示例

    這篇文章主要介紹了vue中的自定義分頁插件組件的示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-08-08
  • vue3中的組件間的傳值(props)

    vue3中的組件間的傳值(props)

    這篇文章主要介紹了vue3中的組件間的傳值(props)問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • 一個因@click.stop引發(fā)的bug的解決

    一個因@click.stop引發(fā)的bug的解決

    這篇文章主要介紹了一個因@click.stop引發(fā)的bug的解決,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-01-01
  • VUE?mixin?使用示例詳解

    VUE?mixin?使用示例詳解

    混入mixin提供了一種非常靈活的方式,來分發(fā)Vue組件中的可復(fù)用功能,一個混入對象可以包含任意組件選項,接下來通過本文給大家介紹VUE?mixin?使用,需要的朋友可以參考下
    2022-08-08
  • vue3 vite配置跨域及不生效問題解決

    vue3 vite配置跨域及不生效問題解決

    這篇文章主要介紹了vue3 vite配置跨域以及不生效問題,本文給大家分享完美解決方案,需要的朋友可以參考下
    2023-07-07

最新評論