這里以證件號和證件類型為例
1. 表單元素
1 <el-form-item label="證件類型:" prop="identifyType" :error="errorTypeInfo"> 2 <el-select v-model.trim="baseInfo.identifyType" placeholder="請選擇證件類型" @change="typeChange" 3 :disabled="noInput"> 4 <el-option 5 v-for="item in identifyList" 6 :key="item.label" 7 :label="item.value" 8 :value="item.label"> 9 </el-option> 10 </el-select> 11 </el-form-item> 12 <el-form-item label="證件號:" prop="identifyNo" v-if="level === '0'"> 13 <el-input class="uppercase" v-model.trim="baseInfo.identifyNo" placeholder="請輸入證件號" maxlength="32" clearable></el-input> 14 </el-form-item>
2. 證件號的校驗
輸入證件號校驗證件類型這里用了:error ,也可以直接$refs的validateField()去校驗
1 let checkIdCard = function (rule, value, callback) { 2 if (value) { 3 if (!vm.baseInfo.identifyType) { 4 vm.errorTypeInfo = '請選擇證件類型'; 5 return false 6 } 7 let type = vm.baseInfo.identifyType; 8 if (type === '01' || type === '02') { 9 vm.noInputBirth = true; 10 let result = checkUtil.checkIDNum(value); 11 if (result === '0') { 12 callback(new Error('請輸入正確的證件號')); 13 } else { 14 // 身份證 自動獲取出生和性別 15 vm.baseInfo.birthday = getBirthdayFromIdCard(value); 16 vm.baseInfo.sex = getGenderFromIdCard(value); 17 callback(); 18 } 19 } else { 20 vm.noInputBirth = false; 21 if (checkUtil.checkIdentifyNum(type, value) === 'success') { 22 callback(); 23 } else { 24 callback(new Error('請輸入正確的證件號')); 25 } 26 } 27 } else { 28 return callback(new Error('請輸入證件號')); 29 } 30 }
3. 證件類型的校驗
1 let checkIdType = (rule, value, callback) => { 2 if (!value) { 3 callback(new Error('請選擇證件類型')) 4 } else { 5 let type = vm.baseInfo.identifyType 6 if (type === '01' || type === '02') { 7 vm.noInputBirth = true; 8 } else { 9 vm.noInputBirth = false; 10 callback() 11 } 12 }