成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

解析vue表單驗證rules及validator驗證器的使用方法

3403771864 / 1851人閱讀

  很多知識都是需要提早知道,才可以規(guī)避很多錯誤。

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

  注意:prop對應表單域 model 字段,使用 validate方法時,該屬性是必填的。

  表單驗證rules

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

  將prop屬性設置為需校驗的字段名。

1.jpg

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

  required:true表示為必須輸入;

  message:""設置不符合校驗規(guī)則時的提示信息;

  trigger:""設置校驗的觸發(fā)方式:

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

  ‘blur’:失去焦點時觸發(fā);

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

2.png

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

00.png


  該示例完整代碼:

  <el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm">
  <el-form-item label="活動名稱" prop="name">
  <el-input v-model="ruleForm.name"></el-input>
  </el-form-item>
  <el-form-item label="活動區(qū)域" prop="region">
  <el-select v-model="ruleForm.region" placeholder="請選擇活動區(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="活動時間" 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="選擇時間" v-model="ruleForm.date2" style="width: 100%;"></el-time-picker>
  </el-form-item>
  </el-col>
  </el-form-item>
  <el-form-item label="即時配送" prop="delivery">
  <el-switch v-model="ruleForm.delivery"></el-switch>
  </el-form-item>
  <el-form-item label="活動性質" prop="type">
  <el-checkbox-group v-model="ruleForm.type">
  <el-checkbox label="美食/餐廳線上活動" name="type"></el-checkbox>
  <el-checkbox label="地推活動" name="type"></el-checkbox>
  <el-checkbox label="線下主題活動" 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="線下場地免費"></el-radio>
  </el-radio-group>
  </el-form-item>
  <el-form-item label="活動形式" 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: '請輸入活動名稱', trigger: 'blur' },
  { min: 3, max: 5, message: '長度在 3 到 5 個字符', trigger: 'blur' }
  ],
  region: [
  { required: true, message: '請選擇活動區(qū)域', trigger: 'change' }
  ],
  date1: [
  { type: 'date', required: true, message: '請選擇日期', trigger: 'change' }
  ],
  date2: [
  { type: 'date', required: true, message: '請選擇時間', trigger: 'change' }
  ],
  type: [
  { type: 'array', required: true, message: '請至少選擇一個活動性質', trigger: 'change' }
  ],
  resource: [
  { required: true, message: '請選擇活動資源', trigger: 'change' }
  ],
  desc: [
  { required: true, message: '請?zhí)顚懟顒有问?#39;, 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>

  自定義校驗規(guī)則

  除此之外,還可以使用validator驗證器來自定義校驗規(guī)則,

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

4.png

  還是和之前一樣,設置prop需校驗的字段名和v-model綁定值

0.png

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

5.png

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

6.png

  完整代碼如下:

  <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="確認密碼" 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('請再次輸入密碼'));
  } 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>

         本篇內容已結束,歡迎大家更多精彩內容。

文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉載請注明本文地址:http://systransis.cn/yun/128382.html

相關文章

  • va.js——Vue 表單驗證插件寫作過程

    摘要:一表單驗證模塊的構成任何表單驗證模塊都是由配置校驗報錯取值這幾部分構成的。其實我是想寫個指令來完成表單驗證的事的。當然表單驗證這種是高度定制化的。 前言 前段時間,老大搭好了Vue的開發(fā)環(huán)境,于是我們愉快地從JQ來到了Vue。這中間做的時候,在表單驗證上做的不開心,看到vue的插件章節(jié),感覺自己也能寫一個,因此就自己開始寫了一個表單驗證插件va.js。 當然為什么不找個插件呢? vu...

    suosuopuo 評論0 收藏0
  • 封裝Vue組件一些技巧

    摘要:根據(jù)組件單向數(shù)據(jù)流和和事件通信機制,需要由子組件通過事件通知父組件,并在父組件中修改原始的數(shù)據(jù),完成狀態(tài)的更新。 本文同步在個人博客shymean.com上,歡迎關注 寫Vue有很長一段時間了,除了常規(guī)的業(yè)務開發(fā)之外,也應該思考和反思一下封裝組件的正確方式。以彈窗組件為例,一種實現(xiàn)是在需要模板中引入需要彈窗展示的組件,然后通過一個flag變量來控制彈窗的組件,在業(yè)務代碼里面會充斥著冗余的彈...

    韓冰 評論0 收藏0
  • 使用vue自定義指令開發(fā)一個表單驗證插件validate.js

    摘要:今天就來介紹一下如何利用的自定義指令來開發(fā)一個表單驗證插件的過程。按照這種方式就能夠使用自己開發(fā)的這個表單校驗插件。這段時間在進行一個新項目的前期搭建,新項目框架采用vue-cli3和typescirpt搭建。因為項目比較輕量,所以基本沒有使用額外的ui組件,有時候我們需要的一些基礎組件我就直接自己開發(fā)了。今天就來介紹一下如何利用vue的自定義指令directive來開發(fā)一個表單驗證插件的過...

    warnerwu 評論0 收藏0
  • Vue 進階系列(二)之插件原理實現(xiàn)

    摘要:示例輸出第一步先不考慮插件,在已有的中是沒有這個公共方法的,如果要簡單實現(xiàn)的話可以通過鉤子函數(shù)來,即在里面驗證邏輯。按照插件的開發(fā)流程,應該有一個公開方法,在里面使用全局的方法添加一些組件選項,方法包含一個鉤子函數(shù),在鉤子函數(shù)中驗證。 (關注福利,關注本公眾號回復[資料]領取優(yōu)質前端視頻,包括Vue、React、Node源碼和實戰(zhàn)、面試指導)showImg(https://segmen...

    wuaiqiu 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<