element-ui中form驗(yàn)證的示例分析-創(chuàng)新互聯(lián)

這篇文章主要介紹了element-ui中form驗(yàn)證的示例分析,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

成都創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都做網(wǎng)站、網(wǎng)站設(shè)計(jì)、中江網(wǎng)絡(luò)推廣、小程序定制開發(fā)、中江網(wǎng)絡(luò)營銷、中江企業(yè)策劃、中江品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們大的嘉獎(jiǎng);成都創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供中江建站搭建服務(wù),24小時(shí)服務(wù)熱線:18982081108,官方網(wǎng)址:muchs.cn
當(dāng)我們添加required驗(yàn)證后,輸入一些數(shù)據(jù)后再刪除完時(shí),會(huì)出現(xiàn)xxx is required,如下圖所示

element-ui中form驗(yàn)證的示例分析

你可能很納悶,已經(jīng)為form表單傳入了rules了啊,在不全部刪除時(shí),驗(yàn)證規(guī)則都沒問題。這個(gè)問題是因?yàn)樵趆tml中使用了required字段,而在rules的規(guī)則沒有設(shè)置required為true,

// html
<el-form-item label="角色名稱" required prop="roleName">
 <el-input v-model="params.roleName"></el-input>  
</el-form-item>

// js
{ trigger: 'blur', message: '角色名稱為必填項(xiàng)' }

這種情況下就會(huì)為輸入框添加一條默認(rèn)驗(yàn)證規(guī)則,就導(dǎo)致了上面圖片情況的發(fā)生。

為了解決這種情況,我們只需要把卸載html里的required去除,并把他移動(dòng)到rules的規(guī)則之中即可。

// js
{ required: true, trigger: 'blur', message: '角色名稱為必填項(xiàng)' }
級聯(lián)提交表單驗(yàn)證

對于一些復(fù)雜的表單,我們經(jīng)常會(huì)遇到在提交前需要驗(yàn)證多個(gè)表單的情況。

由于element的最后validate方法是異步的。

如果每個(gè)表單都是相互獨(dú)立的話,我們沒必要同步的去驗(yàn)證所有的表單。

因此可以將每個(gè)獨(dú)立的表單封裝成Promise,再使用Promise.all進(jìn)行回調(diào)處理。

可以參考下面使用了async/await的vue代碼。

// 進(jìn)行異步表單驗(yàn)證
async validateData () {
 this.formValidatePromiseArr = []
 this.formList.map((form, index) => {
  this.validateEachForm(form, `form${index}`)
 })
 // 如果沒有全部驗(yàn)證成功,則進(jìn)入捕獲的錯(cuò)誤處理
 try {
  await Promise.all(this.formValidatePromiseArr)
  console.log('finish')
  this.next()
 } catch (error) {
  console.log(error)
 }
},
// 校驗(yàn)每個(gè)獨(dú)立表單數(shù)據(jù)
validateEachForm (form, name) {
 let formResult = new Promise((resolve, reject) => {
  // 利用ref取到要驗(yàn)證的表單
  this.$refs[name][0].validate((valid) => {
   if (valid) {
    resolve()
   } else {
    console.log(`${name}的數(shù)據(jù)不完整`)
    reject()
   }
  })
 })
 this.formValidatePromiseArr.push(formResult)
}
嵌套屬性校驗(yàn)

對于復(fù)雜表單,我們難免需要進(jìn)行更深層級的驗(yàn)證。

對于明確知道要驗(yàn)證的嵌套屬性,可以在rules對象定義時(shí),使用字符串形式指定要驗(yàn)證的屬性,同事在prop綁定相應(yīng)值。

// html
<el-form-item label="年齡信息" prop="info.age">
 <el-input v-model="form.info.age"></el-input>  
</el-form-item>

// js
rules: {
 name: [{required: true, trigger: 'blur', message: 'required'}],
 'info.age': [{required: true, trigger: 'blur', message: 'required'}]
},

對于在循環(huán)之中動(dòng)態(tài)綁定的屬性,則需要進(jìn)行動(dòng)態(tài)的prop綁定(必須是字符串形式的屬性取值),再綁定指定的rules,例如

// html
<div v-for="info in form.infoList">
 <el-form-item label="年齡信息" :prop="`infoList[${index}].age`" :rules="rules.age">
  <el-input v-model="info.age"></el-input>  
 </el-form-item>
</div>

// js
rules: {
 age: [{required: true, trigger: 'blur', message: 'required'}]
},

這樣就能順利的綁定上我們需要的驗(yàn)證規(guī)則。

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“element-ui中form驗(yàn)證的示例分析”這篇文章對大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來學(xué)習(xí)!

分享名稱:element-ui中form驗(yàn)證的示例分析-創(chuàng)新互聯(lián)
轉(zhuǎn)載源于:http://muchs.cn/article46/deighg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站收錄、虛擬主機(jī)、網(wǎng)站建設(shè)、外貿(mào)建站、網(wǎng)站制作、網(wǎng)站設(shè)計(jì)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)