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

淺談validator自定義驗(yàn)證及易錯(cuò)點(diǎn)

 更新時(shí)間:2022年02月08日 14:53:02   作者:虛實(shí)與  
這篇文章主要介紹了validator自定義驗(yàn)證及易錯(cuò)點(diǎn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

validator自定義驗(yàn)證及易錯(cuò)點(diǎn)

validator自定義驗(yàn)證

element中Form 組件提供了表單驗(yàn)證的功能,只需要通過(guò) rules 屬性傳入約定的驗(yàn)證規(guī)則,并將 Form-Item 的 prop 屬性設(shè)置為需校驗(yàn)的字段名即可。

而表單驗(yàn)證功能就包括validator自定義驗(yàn)證,用法如圖所示

在這里插入圖片描述

在驗(yàn)證規(guī)則中自定義一個(gè)規(guī)則,命名隨意,再給它一個(gè)觸發(fā)函數(shù),而規(guī)則自定義的方法如下

在這里插入圖片描述

  • value:輸入的數(shù)據(jù);
  • callback:回滾的對(duì)象

在這個(gè)箭頭函數(shù)中定義自己想要的規(guī)則,就可以實(shí)現(xiàn)自定義,但要注意的是必須回滾

易錯(cuò)點(diǎn)

寫完測(cè)試時(shí)發(fā)現(xiàn)自定義的驗(yàn)證無(wú)法使用,但是其他驗(yàn)證缺沒(méi)有任何問(wèn)題,那原因就是在于數(shù)據(jù)沒(méi)有綁定成功

在這里插入圖片描述

這時(shí)就應(yīng)該檢查圖中這三個(gè)地方,自定義驗(yàn)證時(shí)是需要這三個(gè)地方保持一致的,否則自定義驗(yàn)證不會(huì)成功

vue里面如何自定義校驗(yàn)

正常用的都是elemelnt-ui組件的form表單;里面有校驗(yàn)規(guī)則;

如下

<el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm">
  <el-form-item label="活動(dòng)名稱" prop="name">
    <el-input v-model="ruleForm.name"></el-input>
  </el-form-item>
  <el-form-item label="活動(dòng)區(qū)域" prop="region">
    <el-select v-model="ruleForm.region" placeholder="請(qǐng)選擇活動(dòng)區(qū)域">
      <el-option label="區(qū)域一" value="shanghai"></el-option>
      <el-option label="區(qū)域二" value="beijing"></el-option>
    </el-select>
  </el-form-item>
  <el-form-item label="活動(dòng)時(shí)間" required>
    <el-col :span="11">
      <el-form-item prop="date1">
        <el-date-picker type="date" placeholder="選擇日期" v-model="ruleForm.date1" style="width: 100%;"></el-date-picker>
      </el-form-item>
    </el-col>
    <el-col class="line" :span="2">-</el-col>
    <el-col :span="11">
      <el-form-item prop="date2">
        <el-time-picker placeholder="選擇時(shí)間" v-model="ruleForm.date2" style="width: 100%;"></el-time-picker>
      </el-form-item>
    </el-col>
  </el-form-item>
  <el-form-item label="即時(shí)配送" prop="delivery">
    <el-switch v-model="ruleForm.delivery"></el-switch>
  </el-form-item>
  <el-form-item label="活動(dòng)性質(zhì)" prop="type">
    <el-checkbox-group v-model="ruleForm.type">
      <el-checkbox label="美食/餐廳線上活動(dòng)" name="type"></el-checkbox>
      <el-checkbox label="地推活動(dòng)" name="type"></el-checkbox>
      <el-checkbox label="線下主題活動(dòng)" name="type"></el-checkbox>
      <el-checkbox label="單純品牌曝光" name="type"></el-checkbox>
    </el-checkbox-group>
  </el-form-item>
  <el-form-item label="特殊資源" prop="resource">
    <el-radio-group v-model="ruleForm.resource">
      <el-radio label="線上品牌商贊助"></el-radio>
      <el-radio label="線下場(chǎng)地免費(fèi)"></el-radio>
    </el-radio-group>
  </el-form-item>
  <el-form-item label="活動(dòng)形式" prop="desc">
    <el-input type="textarea" v-model="ruleForm.desc"></el-input>
  </el-form-item>
  <el-form-item>
    <el-button type="primary" @click="submitForm('ruleForm')">立即創(chuàng)建</el-button>
    <el-button @click="resetForm('ruleForm')">重置</el-button>
  </el-form-item>
</el-form>
<script>
  export default {
    data() {
      return {
        ruleForm: {
          name: '',
          region: '',
          date1: '',
          date2: '',
          delivery: false,
          type: [],
          resource: '',
          desc: ''
        },
        rules: {
          name: [
            { required: true, message: '請(qǐng)輸入活動(dòng)名稱', trigger: 'blur' },
            { min: 3, max: 5, message: '長(zhǎng)度在 3 到 5 個(gè)字符', trigger: 'blur' }
          ],
          region: [
            { required: true, message: '請(qǐng)選擇活動(dòng)區(qū)域', trigger: 'change' }
          ],
          date1: [
            { type: 'date', required: true, message: '請(qǐng)選擇日期', trigger: 'change' }
          ],
          date2: [
            { type: 'date', required: true, message: '請(qǐng)選擇時(shí)間', trigger: 'change' }
          ],
          type: [
            { type: 'array', required: true, message: '請(qǐng)至少選擇一個(gè)活動(dòng)性質(zhì)', trigger: 'change' }
          ],
          resource: [
            { required: true, message: '請(qǐng)選擇活動(dòng)資源', trigger: 'change' }
          ],
          desc: [
            { required: true, message: '請(qǐng)?zhí)顚懟顒?dòng)形式', trigger: 'blur' }
          ]
        }
      };
    },
    methods: {
      submitForm(formName) {
        this.$refs[formName].validate((valid) => {
          if (valid) {
            alert('submit!');
          } else {
            console.log('error submit!!');
            return false;
          }
        });
      },
      resetForm(formName) {
        this.$refs[formName].resetFields();
      }
    }
  }
</script>

也可以自定義校驗(yàn)

如下:

通過(guò)validator屬性來(lái)自定義;是模擬form表單那個(gè)自定義校驗(yàn)規(guī)則的

<script>
  export default {
    data() {
      var checkAge = (rule, value, callback) => {
        if (!value) {
          return callback(new Error('年齡不能為空'));
        }
        setTimeout(() => {
          if (!Number.isInteger(value)) {
            callback(new Error('請(qǐng)輸入數(shù)字值'));
          } else {
            if (value < 18) {
              callback(new Error('必須年滿18歲'));
            } else {
              callback();
            }
          }
        }, 1000);
      };
      var validatePass = (rule, value, callback) => {
        if (value === '') {
          callback(new Error('請(qǐng)輸入密碼'));
        } else {
          if (this.ruleForm.checkPass !== '') {
            this.$refs.ruleForm.validateField('checkPass');
          }
          callback();
        }
      };
      var validatePass2 = (rule, value, callback) => {
        if (value === '') {
          callback(new Error('請(qǐng)?jiān)俅屋斎朊艽a'));
        } else if (value !== this.ruleForm.pass) {
          callback(new Error('兩次輸入密碼不一致!'));
        } else {
          callback();
        }
      };
      return {
        ruleForm: {
          pass: '',
          checkPass: '',
          age: ''
        },
        rules: {
          pass: [
            { validator: validatePass, trigger: 'blur' }
          ],
          checkPass: [
            { validator: validatePass2, trigger: 'blur' }
          ],
          age: [
            { validator: checkAge, trigger: 'blur' }
          ]
        }
      };
    }, 
</script>

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • vue2.0+SVG實(shí)現(xiàn)音樂(lè)播放圓形進(jìn)度條組件

    vue2.0+SVG實(shí)現(xiàn)音樂(lè)播放圓形進(jìn)度條組件

    這篇文章主要為大家詳細(xì)介紹了Vue2.0+SVG實(shí)現(xiàn)音樂(lè)播放圓形進(jìn)度條組件,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-09-09
  • 使用Vue 實(shí)現(xiàn)滑動(dòng)驗(yàn)證碼功能

    使用Vue 實(shí)現(xiàn)滑動(dòng)驗(yàn)證碼功能

    本文章主要來(lái)介紹一下第一個(gè)階段,也就是前端校驗(yàn)的驗(yàn)證碼的實(shí)現(xiàn),下面來(lái)介紹一下拖動(dòng)驗(yàn)證碼的具體實(shí)現(xiàn)。這篇文章主要介紹了利用 Vue 實(shí)現(xiàn)滑動(dòng)驗(yàn)證碼,需要的朋友可以參考下
    2019-06-06
  • Vue實(shí)現(xiàn)省市區(qū)三級(jí)聯(lián)動(dòng)

    Vue實(shí)現(xiàn)省市區(qū)三級(jí)聯(lián)動(dòng)

    這篇文章主要為大家詳細(xì)介紹了Vue實(shí)現(xiàn)省市區(qū)三級(jí)聯(lián)動(dòng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-12-12
  • 使用vue-resource進(jìn)行數(shù)據(jù)交互的實(shí)例

    使用vue-resource進(jìn)行數(shù)據(jù)交互的實(shí)例

    下面小編就為大家?guī)?lái)一篇使用vue-resource進(jìn)行數(shù)據(jù)交互的實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-09-09
  • Vue el-table 默認(rèn)展開某一行的實(shí)例

    Vue el-table 默認(rèn)展開某一行的實(shí)例

    這篇文章主要介紹了Vue el-table 默認(rèn)展開某一行的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • Vuex詳細(xì)介紹和使用方法

    Vuex詳細(xì)介紹和使用方法

    本文詳細(xì)講解了Vuex和其使用方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-03-03
  • vue.js父子組件通信動(dòng)態(tài)綁定的實(shí)例

    vue.js父子組件通信動(dòng)態(tài)綁定的實(shí)例

    今天小編就為大家分享一篇vue.js父子組件通信動(dòng)態(tài)綁定的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-09-09
  • v-distpicker地區(qū)選擇器組件使用實(shí)例詳解

    v-distpicker地區(qū)選擇器組件使用實(shí)例詳解

    代碼添加了一個(gè)vDistpickerHandle的事件處理函數(shù)對(duì)地區(qū)選擇器中的數(shù)據(jù)進(jìn)行處理,將數(shù)據(jù)存儲(chǔ)到form對(duì)象的相應(yīng)屬性中,方便數(shù)據(jù)提交,這篇文章主要介紹了v-distpicker地區(qū)選擇器組件使用,需要的朋友可以參考下
    2024-02-02
  • vue-lazyload使用總結(jié)(推薦)

    vue-lazyload使用總結(jié)(推薦)

    vue項(xiàng)目用到vue-lazyload做圖片懶加載,這篇文章主要介紹了vue-lazyload使用總結(jié),解決這個(gè)插件的坑,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2018-11-11
  • vue實(shí)現(xiàn)移動(dòng)端圖片裁剪上傳功能

    vue實(shí)現(xiàn)移動(dòng)端圖片裁剪上傳功能

    這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)移動(dòng)端圖片裁剪上傳功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-08-08

最新評(píng)論