vue表单验证库async-validator的使用 elementUi + form
目前使用vue在构建登录注册页面的时候,一般都是引入elementUi的form组件.它添加了async-validator.
大幅提升了开发效率.async-validator是一个用来验证数据规则的一个库.它的github地址是https://github.com/yiminghe/async-validator .我们可以在elementui里直接使用它.下面介绍它的使用方法.
其实很简单,我们直接复制eui官网上的代码.早form组件里.它大概长这样儿:
下面我附上全部的代码:
<template>
<div>
<el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm">
<el-form-item label="活动名称" prop="name">
<el-input v-model="ruleForm.name"></el-input>
</el-form-item>
<el-form-item label="活动区域" prop="region">
<el-select v-model="ruleForm.region" placeholder="请选择活动区域">
<el-option label="区域一" value="shanghai"></el-option>
<el-option label="区域二" value="beijing"></el-option>
</el-select>
</el-form-item>
<el-form-item label="活动时间" required>
<el-col :span="11">
<el-form-item prop="date1">
<el-date-picker type="date" placeholder="选择日期" v-model="ruleForm.date1" style="width: 100%;"></el-date-picker>
</el-form-item>
</el-col>
<el-col class="line" :span="2">-</el-col>
<el-col :span="11">
<el-form-item prop="date2">
<el-time-picker type="fixed-time" placeholder="选择时间" v-model="ruleForm.date2" style="width: 100%;"></el-time-picker>
</el-form-item>
</el-col>
</el-form-item>
<el-form-item label="即时配送" prop="delivery">
<el-switch v-model="ruleForm.delivery"></el-switch>
</el-form-item>
<el-form-item label="活动性质" prop="type">
<el-checkbox-group v-model="ruleForm.type">
<el-checkbox label="美食/餐厅线上活动" name="type"></el-checkbox>
<el-checkbox label="地推活动" name="type"></el-checkbox>
<el-checkbox label="线下主题活动" name="type"></el-checkbox>
<el-checkbox label="单纯品牌曝光" name="type"></el-checkbox>
</el-checkbox-group>
</el-form-item>
<el-form-item label="特殊资源" prop="resource">
<el-radio-group v-model="ruleForm.resource">
<el-radio label="线上品牌商赞助"></el-radio>
<el-radio label="线下场地免费"></el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="活动形式" prop="desc">
<el-input type="textarea" v-model="ruleForm.desc"></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="submitForm('ruleForm')">立即创建</el-button>
<el-button @click="resetForm('ruleForm')">重置</el-button>
</el-form-item>
</el-form>
</div>
</template>
<script>
export default {
data() {
return {
ruleForm: {
name: "",
region: "",
date1: "",
date2: "",
delivery: false,
type: [],
resource: "",
desc: ""
},
rules: {
name: [
{ required: true, message: "请输入活动名称", trigger: "blur" },
{ min: 3, max: 5, message: "长度在 3 到 5 个字符", trigger: "blur" }
],
region: [
{ required: true, message: "请选择活动区域", trigger: "change" }
],
date1: [
{
type: "date",
required: true,
message: "请选择日期",
trigger: "change"
}
],
date2: [
{
type: "date",
required: true,
message: "请选择时间",
trigger: "change"
}
],
type: [
{
type: "array",
required: true,
message: "请至少选择一个活动性质",
trigger: "change"
}
],
resource: [
{ required: true, message: "请选择活动资源", trigger: "change" }
],
desc: [{ required: true, message: "请填写活动形式", trigger: "blur" }]
}
};
},
methods: {
submitForm(formName) {
this.$refs[formName].validate(valid => {
if (valid) {
alert("submit!");
} else {
console.log("error submit!!");
return false;
}
});
},
resetForm(formName) {
this.$refs[formName].resetFields();
}
}
};
</script>
这是直接复制的eui的官网代码.使用也非常简单.当然肯定要先引入eui啊.script标签里的rules是一个对象,是所有的验证规则.比如对象内的第一个
name: [
{ required: true, message: “请输入活动名称”, trigger: “blur” },
{ min: 3, max: 5, message: “长度在 3 到 5 个字符”, trigger: “blur” }
],
它表示一个验证规则,数组内共两项,required: true 表示必填项.当然 你也可以更改false为非必填. message为提示的文字信息.trigger为事件类型. min和max一看就懂.不用解释了.需要说的是,它还可以填写正则.因为官网复制下来的这份代码没有这一项.如果要使用,就在数组内添加.比如添加 { pattern: /1{1,11}$/, message: ‘联系人手机号码的格式错误!’, trigger: ‘blur’ }; 具体的信息一看就懂.也不用解释了. 总之 ,验证规则就这三项, 规则 提示信息 和 事件类型.
然后在视图使用就更简单了. :rules绑定验证对象. 每一项用prop绑定验证规则. 使用效果如图:
在我没有输入信息的情况下点击立即创建 会有以下提示:
0-9-_ ↩︎