關(guān)于element-ui中el-form自定義驗(yàn)證(調(diào)用后端接口)
element-ui中el-form自定義驗(yàn)證
需求
在輸入項(xiàng)目名稱后,調(diào)用后端接口isNameOnly,若已存在,則效果如下圖:

1.先設(shè)置校驗(yàn)規(guī)則rules
<el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm">
2.在return中定義
// 判定規(guī)則
rules: {
taskName: [{
required: true,
message: '請(qǐng)輸入項(xiàng)目名稱',
trigger: 'blur'
},
{
min: 3,
max: 15,
message: '長(zhǎng)度在 3 到 15 個(gè)字符',
trigger: 'blur'
},
{
required: true,
trigger: 'blur',
//validatePass --- 我們自定義的校驗(yàn)規(guī)則
validator: validatePass
}
],
},
3.在data中添加如下代碼:(注意,以下代碼和return同級(jí))
const validatePass = (rule, value, callback) => {
this.$depot.get({
url: '/isNameOnly',
config: {
params: {
taskName: 1,
userId: 1)
}
},
cb: (res) => {
this.nameOK = res.data == 1 ? true : false
}
})
if (this.nameOK != false) {
callback()
} else {
callback(new Error('經(jīng)驗(yàn)證,該項(xiàng)目已存在于數(shù)據(jù)庫(kù)中'))
}
}
4.method定義提交表單方法
// 提交表單數(shù)據(jù)
submitForm(formName) {
this.$refs[formName].validate((valid) => {
if (valid) {
this.$message({
message: '恭喜你!項(xiàng)目創(chuàng)建成功!',
type: 'success'
});
} else {
this.$message({
message: '請(qǐng)按照提示正確輸入信息后再創(chuàng)建!',
center: true
});
}
});
},
element-ui自定義form表單校驗(yàn)規(guī)則
HTML:
<el-form
ref="form"
label-width="120px"
:rules="rules"
:model="ruleForm"
>
<el-form-item
label="身份證號(hào)"
size="mini"
class="part"
prop="id_card"
>
<el-input
v-model="ruleForm.id_card"
></el-input>
</el-form-item>
</el-form>注意
使用校驗(yàn)規(guī)則的表單,在data中定義的時(shí)候必須要放在一個(gè)對(duì)象中,:model="ruleForm"這行代碼一定要寫,不寫不生效!
js:
export default {
name: "",
data() {
//自定義校驗(yàn)規(guī)則
var checkIdCard = (rule, value, cb) => {
const regIdCard = /^[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]$/;
if (regIdCard.test(value)) {
return cb();
}
cb(new Error("您輸入的身份證號(hào)碼不是有效格式"));
};
return {
ruleForm: {
id_card: "", //身份證
},
rules: {
id_card: [
{ required: true, message: "請(qǐng)輸入身份證", trigger: "blur" },
{ validator: checkIdCard, trigger: "blur" },
],
}
},
element ui 官網(wǎng)也有詳細(xì)介紹哦------https://element.eleme.cn/#/zh-CN/component/form
這樣也就實(shí)現(xiàn)了自定義校驗(yàn)的規(guī)則,可以在項(xiàng)目中使用了!
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
vue如何使用媒體查詢實(shí)現(xiàn)響應(yīng)式
這篇文章主要介紹了vue如何使用媒體查詢實(shí)現(xiàn)響應(yīng)式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-09-09
elementui使用el-upload組件如何實(shí)現(xiàn)自定義上傳
這篇文章主要介紹了elementui使用el-upload組件如何實(shí)現(xiàn)自定義上傳,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-08-08
vue-cli中設(shè)置publicPath的幾種方式對(duì)比
這篇文章主要介紹了vue-cli中設(shè)置publicPath的幾種方式對(duì)比,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-07-07
vue 基于element-ui 分頁組件封裝的實(shí)例代碼
這篇文章主要介紹了vue 基于element-ui 分頁組件封裝的實(shí)例代碼,代碼簡(jiǎn)單易懂,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-12-12
vue3封裝AES(CryptoJS)前端加密解密通信代碼實(shí)現(xiàn)
防止數(shù)據(jù)被爬取,前后端傳參接收參數(shù)需要加密處理,使用AES加密,這篇文章主要給大家介紹了關(guān)于vue3封裝AES(CryptoJS)前端加密解密通信代碼實(shí)現(xiàn)的相關(guān)資料,需要的朋友可以參考下2023-12-12

