vue + element-ui 表單校驗封裝公用方法


1.新建表單驗證方法封裝 src/utils/formCheck.js

 1 // 手機號碼驗證
 2 const validatePhone = (rule, value, callback) => {
 3   const patter = new RegExp('^1([358][0-9]|4[579]|66|7[0135678]|9[89])[0-9]{8}$')
 4   if (!patter.test(value)) {
 5     return callback(new Error('請輸入正確格式的手機號!'))
 6   } else {
 7     callback() // 必須有此項回調,否則驗證會一直不通過
 8   }
 9 }
10 // 郵箱的正則
11 const validateEmail = (rule, value, callback) => {
12   const mailbox = new RegExp('^[a-zA-Z0-9_.-]+@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*\.[a-zA-Z0-9]{2,6}$')
13   if (!mailbox.test(value)) {
14     return callback(new Error('請輸入正確格式的郵箱!'))
15   } else {
16     callback()
17   }
18 }
19 // 身份證號
20 const validateIdCardNo = (rule, value, callback) => {
21   const mailbox = new RegExp('^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$)|(^[1-9]\d{5}\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{2}[0-9Xx]$')
22   if (!mailbox.test(value)) {
23     return callback(new Error('請輸入正確格式的身份證號!'))
24   } else {
25     callback()
26   }
27 }
28 export default {
29   common: { 
30     // ---------------------公共驗證方法
31     phone: [{// 手機號
32       required: true,
33       message: '手機號不能為空'
34     }, {
35       validator: validatePhone,
36       trigger: 'blur'
37     }],
38     email: [{// 郵箱
39         required: true,
40         message: '郵箱不能為空'
41       },
42       {
43         validator: validateEmail,
44         trigger: 'blur'
45       }
46     ],
47     idCardNo: [{// 身份證號碼
48         required: true,
49         message: '身份證號碼不能為空'
50       },
51       {
52         validator: validateIdCardNo,
53         trigger: 'blur'
54       }
55     ]
56   },
57   handle: {
58     // ---------------------處理表單的驗證方法
59     operResult: [{//處理結果
60       required: true,
61       message: '請選擇處理結果'
62     }],
63     opinion: [{//處理結果描述
64       required: true,
65       message: '請填寫處理結果描述'
66     }]
67   },
    
68 }

export default內可以分類封裝驗證,封裝不同表單的驗證方法

2.全局掛在 main.js

1 import rules from './utils/formCheck.js'
2 
3 // 全局方法掛載
4 Vue.prototype.$rules = rules

3.使用

表單標簽加  :rules="$rules.handle"

 1 <el-form
 2       ref="form"
 3       :model="form"
 4       label-width="150px"
 5       :rules="$rules.handle"
 6       style="padding:0 50px 0 20px;"
 7     >
 8       <div class="wrap">
 9         <el-form-item label="處理結果" prop="operResult">
10           <el-select
11             v-model="form.operResult"
12             placeholder="請選擇處理結果"
13             clearable
14             size="small"
15             style="width:50%"
16           >
17             <el-option
18               v-for="item in handle_result"
19               :key="item.dictValue"
20               :label="item.dictLabel"
21               :value="item.dictValue"
22             ></el-option>
23           </el-select>
24         </el-form-item>
25         <el-form-item label="處理結果描述" prop="opinion">
26           <el-input type="textarea" v-model="form.opinion" maxlength="320" show-word-limit></el-input>
27         </el-form-item>
28       </div>
29     </el-form>

單獨使用 :rules="$rules.handle.opinion"

1 <el-form-item label="處理結果描述" prop="opinion" :rules="$rules.handle.opinion">
2       <el-input type="textarea" v-model="form.opinion" maxlength="320" show-word-limit></el-input>
3 </el-form-item>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM