最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue表單驗(yàn)證rules及validator驗(yàn)證器的使用方法實(shí)例

 更新時(shí)間:2022年07月10日 11:12:50   作者:每天都要進(jìn)步哦  
在vue開發(fā)中,難免遇到各種表單校驗(yàn),下面這篇文章主要給大家介紹了關(guān)于vue表單驗(yàn)證rules及validator驗(yàn)證器使用的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下

前言

為防止用戶犯錯(cuò),盡可能更早地發(fā)現(xiàn)并糾正錯(cuò)誤。

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

注意:prop對應(yīng)表單域 model 字段,使用 validate方法時(shí),該屬性是必填的。

表單驗(yàn)證rules

以官網(wǎng)給出的例子分析來看

將prop 屬性設(shè)置為需校驗(yàn)的字段名。

 在data里配置要校驗(yàn)字段和校驗(yàn)規(guī)則:

required:true表示為必須輸入;

message:""設(shè)置不符合校驗(yàn)規(guī)則時(shí)的提示信息;

trigger:""設(shè)置校驗(yàn)的觸發(fā)方式:

        ‘change’:數(shù)據(jù)改變時(shí)觸發(fā);

        ‘blur’:失去焦點(diǎn)時(shí)觸發(fā);

        沒有進(jìn)行任何輸入時(shí),不會(huì)觸發(fā)change,但一定會(huì)觸發(fā)blur事件。

設(shè)置校驗(yàn)規(guī)則后,表頭會(huì)出現(xiàn)紅色*樣式

該示例完整代碼:

<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="請選擇活動(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="線下場地免費(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: '請輸入活動(dòng)名稱', trigger: 'blur' },
            { min: 3, max: 5, message: '長度在 3 到 5 個(gè)字符', trigger: 'blur' }
          ],
          region: [
            { required: true, message: '請選擇活動(dòng)區(qū)域', trigger: 'change' }
          ],
          date1: [
            { type: 'date', required: true, message: '請選擇日期', trigger: 'change' }
          ],
          date2: [
            { type: 'date', required: true, message: '請選擇時(shí)間', trigger: 'change' }
          ],
          type: [
            { type: 'array', required: true, message: '請至少選擇一個(gè)活動(dòng)性質(zhì)', trigger: 'change' }
          ],
          resource: [
            { required: true, message: '請選擇活動(dòng)資源', trigger: 'change' }
          ],
          desc: [
            { required: true, message: '請?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驗(yàn)證器來自定義校驗(yàn)規(guī)則,

舉一個(gè)使用自定義驗(yàn)證規(guī)則來完成密碼的二次驗(yàn)證的例子。

還是和之前一樣,設(shè)置prop需校驗(yàn)的字段名和v-model綁定值

 但這時(shí),我們需要在data中自己定義校驗(yàn)規(guī)則,需要注意的是,設(shè)置的規(guī)則與return同級。

 在rules中配置要校驗(yàn)的字段和用到的規(guī)則

 

完整代碼如下:

<el-form :model="ruleForm" status-icon :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm">
  <el-form-item label="密碼" prop="pass">
    <el-input type="password" v-model="ruleForm.pass" autocomplete="off"></el-input>
  </el-form-item>
  <el-form-item label="確認(rèn)密碼" prop="checkPass">
    <el-input type="password" v-model="ruleForm.checkPass" autocomplete="off"></el-input>
  </el-form-item>
  <el-form-item label="年齡" prop="age">
    <el-input v-model.number="ruleForm.age"></el-input>
  </el-form-item>
  <el-form-item>
    <el-button type="primary" @click="submitForm('ruleForm')">提交</el-button>
    <el-button @click="resetForm('ruleForm')">重置</el-button>
  </el-form-item>
</el-form>
<script>
  export default {
    data() {
      var checkAge = (rule, value, callback) => {
        if (!value) {
          return callback(new Error('年齡不能為空'));
        }
        setTimeout(() => {
          if (!Number.isInteger(value)) {
            callback(new Error('請輸入數(shù)字值'));
          } else {
            if (value < 18) {
              callback(new Error('必須年滿18歲'));
            } else {
              callback();
            }
          }
        }, 1000);
      };
      var validatePass = (rule, value, callback) => {
        if (value === '') {
          callback(new Error('請輸入密碼'));
        } else {
          if (this.ruleForm.checkPass !== '') {
            this.$refs.ruleForm.validateField('checkPass');
          }
          callback();
        }
      };
      var validatePass2 = (rule, value, callback) => {
        if (value === '') {
          callback(new Error('請?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' }
          ]
        }
      };
    },
    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>

總結(jié)

到此這篇關(guān)于vue表單驗(yàn)證rules及validator驗(yàn)證器使用的文章就介紹到這了,更多相關(guān)vue表單驗(yàn)證器使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Vue實(shí)現(xiàn)簡易購物車案例

    Vue實(shí)現(xiàn)簡易購物車案例

    這篇文章主要為大家詳細(xì)介紹了Vue實(shí)現(xiàn)簡易購物車案例,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • uniapp微信小程序使用webview嵌套u(yù)niappH5并實(shí)現(xiàn)通信詳細(xì)步驟

    uniapp微信小程序使用webview嵌套u(yù)niappH5并實(shí)現(xiàn)通信詳細(xì)步驟

    在開發(fā)微信小程序的時(shí)候,我們有時(shí)候會(huì)遇到將H5頁面嵌入到小程序頁面中的情況,這篇文章主要給大家介紹了關(guān)于uniapp微信小程序使用webview嵌套u(yù)niappH5并實(shí)現(xiàn)通信的詳細(xì)步驟,需要的朋友可以參考下
    2024-05-05
  • 關(guān)于vue面試題匯總

    關(guān)于vue面試題匯總

    本文給大家收藏整理了關(guān)于vue面試題匯總的一些知識(shí),需要的朋友可以參考下
    2018-03-03
  • vue2使用el-date-picker實(shí)現(xiàn)動(dòng)態(tài)日期范圍demo

    vue2使用el-date-picker實(shí)現(xiàn)動(dòng)態(tài)日期范圍demo

    這篇文章主要為大家介紹了vue2使用el-date-picker實(shí)現(xiàn)動(dòng)態(tài)日期范圍示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06
  • vue3使用富文本編輯器Editor.js的簡單方法

    vue3使用富文本編輯器Editor.js的簡單方法

    Editor.js是一個(gè)用于構(gòu)建具有完全可定制化塊結(jié)構(gòu)的現(xiàn)代編輯器的開源庫,它提供了一個(gè)簡潔、可擴(kuò)展和易于使用的接口,使開發(fā)人員能夠創(chuàng)建擁有豐富內(nèi)容和互動(dòng)性的編輯器,這篇文章主要給大家介紹了關(guān)于vue3使用富文本編輯器Editor.js的簡單方法,需要的朋友可以參考下
    2024-04-04
  • vuex學(xué)習(xí)之Actions的用法詳解

    vuex學(xué)習(xí)之Actions的用法詳解

    本篇文章主要介紹了vuex學(xué)習(xí)之Actions的用法詳解,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-08-08
  • Vue之文件加載執(zhí)行全流程

    Vue之文件加載執(zhí)行全流程

    這篇文章主要介紹了Vue之文件加載執(zhí)行全流程,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • vue實(shí)現(xiàn)節(jié)點(diǎn)增刪改功能

    vue實(shí)現(xiàn)節(jié)點(diǎn)增刪改功能

    這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)節(jié)點(diǎn)增刪改功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-09-09
  • vue一步步實(shí)現(xiàn)alert功能

    vue一步步實(shí)現(xiàn)alert功能

    本篇文章主要介紹了vue一步步實(shí)現(xiàn)alert功能,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-07-07
  • 解決iView Table組件寬度只變大不變小的問題

    解決iView Table組件寬度只變大不變小的問題

    這篇文章主要介紹了解決iView Table組件寬度只變大不變小的問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11

最新評論

那坡县| 昌江| 绥中县| 永寿县| 大丰市| 水富县| 六枝特区| 甘德县| 襄城县| 彩票| 雅安市| 招远市| 镇宁| 上高县| 拜泉县| 安塞县| 襄汾县| 长沙县| 西和县| 马鞍山市| 日土县| 织金县| 平陆县| 固安县| 肇源县| 岳阳县| 新郑市| 礼泉县| 贡嘎县| 黎川县| 沈阳市| 墨脱县| 井研县| 禹城市| 南昌县| 葫芦岛市| 宽城| 盘山县| 仲巴县| 金华市| 上思县|