使用mixins實現elementUI表單全局驗證的解決方法

使用ElementUi搭建框架的時候,大家應該都有考慮過怎么做全局驗證,畢竟復制粘貼什么的是最煩了,這里分享下個人的解決方法。

武陟網站制作公司哪家好,找創新互聯!從網頁設計、網站建設、微信開發、APP開發、自適應網站建設等網站項目制作,到程序開發,運營維護。創新互聯公司2013年成立到現在10年的時間,我們擁有了豐富的建站經驗和運維經驗,來保證我們的工作的順利進行。專注于網站建設就選創新互聯

驗證規則
分析規則

一般驗證規則,主要是是否必填,不為空,以及參數類型的驗證。

基于這個條件,我們開始找找思路, 單個字段的驗證是這樣的:

name: {
 required: 是否必填,
 validator: 自定義規則,
 message: 失敗提示消息(非自定義時觸發),
 trigger: 觸發方式
}

循環實現

固定的規則。當一個東西固定之后,那必然是可以重復使用的,并且可以快速生成,我們可以用循環來實現它。

但是用循環來實現,我們則需要一個數據規則。

定義數據規則

分析下需要的字段,大概就是以下幾種,其他的可以根據自身的需求去增加:

  • 驗證的字段名 label
  • 驗證的值 value
  • 驗證的類型 type
  • 是否必填 required
  • 自定義規則 rules

那最終我們得到的是這樣一個字段配置列表:

fieldList: [
   {label: '賬號', value: 'account', type: 'input', required: true},
   {label: '密碼', value: 'password', type: 'password', required: true},
   {label: '昵稱', value: 'name', type: 'input', required: true},
   {label: '性別', value: 'sex', type: 'select', list: 'sexList', required: true},
   {label: '頭像', value: 'avatar', type: 'input'},
   {label: '手機號碼', value: 'phone', type: 'input'},
   {label: '微信', value: 'wechat', type: 'input'},
   {label: 'QQ', value: 'qq', type: 'input'},
   {label: '郵箱', value: 'email', type: 'input'},
   {label: '狀態', value: 'status', type: 'select', list: 'statusList', required: true}
  ]

form完整的字段配置建議參考:

 // 表單相關
  formInfo: {
  ref: null,
  data: {
   id: '', // *唯一ID
   account: '', // *用戶賬號
   password: '', // *用戶密碼
   name: '', // *用戶昵稱
   type: 2, // *用戶類型: 0: 手機注冊 1: 論壇注冊 2: 管理平臺添加
   sex: 0, // *性別: 0:男 1:女
   avatar: '', // 頭像
   phone: '', // 手機號碼
   wechat: '', // 微信
   qq: '', // qq
   email: '', // 郵箱
   status: 1 // *狀態: 0:停用,1:啟用(默認為1)',
   // create_user: '', // 創建人
   // create_time: '', // 創建時間
   // update_user: '', // 修改人
   // update_time: '' // 修改時間
  },
  fieldList: [
   {label: '賬號', value: 'account', type: 'input', required: true},
   {label: '密碼', value: 'password', type: 'password', required: true},
   {label: '昵稱', value: 'name', type: 'input', required: true},
   {label: '性別', value: 'sex', type: 'select', list: 'sexList', required: true},
   {label: '頭像', value: 'avatar', type: 'input'},
   {label: '手機號碼', value: 'phone', type: 'input'},
   {label: '微信', value: 'wechat', type: 'input'},
   {label: 'QQ', value: 'qq', type: 'input'},
   {label: '郵箱', value: 'email', type: 'input'},
   {label: '狀態', value: 'status', type: 'select', list: 'statusList', required: true}
  ],
  rules: {},
  labelWidth: '120px'
  }

實現驗證方法

  • 循環字段列表,根據type判斷是提示選擇不能為空,還是輸入不能為空
  • 如果字段必填,則根據是否有自定義驗證去生成驗證規則
  • 字段非必填,有自定義規則生成驗證
// 初始化驗證數據
 _initRules (formInfo) {
  const obj = {},
  fieldList = formInfo.fieldList
  // 循環字段列表
  for (let item of fieldList) {
  let type = item.type === 'select' ? '選擇' : '輸入'

  if (item.required) {
   if (item.rules) {
   obj[item.value] = {
    required: item.required,
    validator: item.rules,
    trigger: 'blur'
   }
   } else {
   obj[item.value] = {
    required: item.required,
    message: '請' + type + item.label,
    trigger: 'blur'
   }
   }
  } else if (item.rules) {
   obj[item.value] = {
   validator: item.rules,
   trigger: 'blur'
   }
  }
  }
  formInfo.rules = obj
 }

怎么配置到全局

  • 通過mixin配置,然后在頁面中使用(個人使用的是mixin)
  • 配置為全局方法在頁面中調用
  • 掛在到vue實例上,通過this即可訪問

最后

在項目的系統管理模塊中可以看到示例代碼:

項目地址

項目代碼地址

總結

以上所述是小編給大家介紹的使用mixins實現elementUI表單的全局驗證的解決方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對創新互聯網站的支持!

文章標題:使用mixins實現elementUI表單全局驗證的解決方法
鏈接地址:http://m.kartarina.com/article4/pgocie.html

成都網站建設公司_創新互聯,為您提供企業網站制作域名注冊網頁設計公司動態網站面包屑導航企業建站

廣告

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

營銷型網站建設
主站蜘蛛池模板: 日韩AV无码精品一二三区| 无码国产精品一区二区免费式直播| 亚洲日韩激情无码一区| 亚洲国产成人精品无码区在线观看 | 亚洲AV无码精品蜜桃| 欧日韩国产无码专区| AV无码久久久久不卡蜜桃| 精品人妻无码一区二区三区蜜桃一| 久久亚洲日韩看片无码| 国产成人亚洲精品无码AV大片| 中文无码成人免费视频在线观看| 无码国模国产在线无码精品国产自在久国产 | 在线高清无码A.| 无码专区永久免费AV网站| 亚洲另类无码一区二区三区| 亚洲AV无码成人网站久久精品大| 久久久精品无码专区不卡| 一级毛片中出无码| 无码日韩人妻AV一区二区三区| 久久亚洲AV成人无码电影| 亚洲精品无码久久久久久久 | 亚洲色中文字幕无码AV| 免费无码又爽又刺激高潮 | 免费无码看av的网站| 亚洲国产成AV人天堂无码| 久久久无码精品亚洲日韩蜜桃| 少妇性饥渴无码A区免费| 亚洲精品97久久中文字幕无码| 中文字幕无码日韩欧毛| 久久AV高清无码| 亚洲av无码精品网站| 亚洲AV无码乱码国产麻豆| 一区二区三区人妻无码| 亚洲AⅤ无码一区二区三区在线| 毛片无码一区二区三区a片视频| 亚洲成av人无码亚洲成av人 | 亚洲AV日韩AV高潮无码专区| 国产精品无码A∨精品影院 | 精品久久久久久久无码| 久久亚洲精品无码VA大香大香| 精品久久亚洲中文无码|