1. Form组件渲染
1. components -> 新增组件Form.vue
<template>
<div>表单验证</div>
</template>
<script>
export default {
}
</script>
<style lang="less" scoped>
</style>
2. 添加路由 router -> index.js
// 导入组件
import Form from '../components/Form.vue'
//增加新路由规则
const routes = [
{
path: '/',
redirect: '/demo1'
},
{
path: '/demo1',
name: 'Demo1',
component: Demo1
},
{
path: '/form',
name: 'Form',
component: Form
}
]
3. npm run serve 访问http://localhost:8080/#/form

2. 数据绑定
1. 通过Element-UI布局 components -> Form.vue
用到的组件:el-form el-form-item el-input el-button
<template>
<div class="form_container">
<el-form label-width="100px">
<el-form-item label="用户名">
<el-input></el-input>
</el-form-item>
<el-form-item label="密码">
<el-input></el-input>
</el-form-item>
<el-form-item class="btns">
<el-button type="primary">校验</el-button>
<el-button type="info">重置</el-button>
</el-form-item>
</el-form>
</div>
</template>
2.plugins -> element.js
按需导入Element-UI 组件
import Vue from 'vue'
import { Button, Form, Input, FormItem } from 'element-ui'
Vue.use(Button)
Vue.use(Form)
Vue.use(Input)
Vue.use(FormItem)
3.数据绑定
知识点:
model:表单数据对象
v-model:需要绑定的数据对象
<template>
<div class="form_container">
<el-form :model="Form" label-width="100px">
<el-form-item label="用户名">
<el-input v-model="Form.username"></el-input>
</el-form-item>
<el-form-item label="密码">
<el-input v-model="Form.password"></el-input>
</el-form-item>
<el-form-item class="btns">
<el-button type="primary">校验</el-button>
<el-button type="info">重置</el-button>
</el-form-item>
</el-form>
</div>
</template>
4.到行为去增加数据对象
<script>
export default {
data() {
return {
Form: {
username: "",
password: ""
}
};
}
};
</script>
3.数据校验
1. 增加校验规则 rules, prop:作用与el-form-item,表单域 model 字段,在使用 validate、resetFields 方法的情况下,该属性是必填的
<template>
<div class="form_container">
<el-form :model="Form" :rules="FormRules" label-width="100px">
<el-form-item prop="username" label="用户名">
<el-input v-model="Form.username"></el-input>
</el-form-item>
<el-form-item prop="password" label="密码">
<el-input v-model="Form.password"></el-input>
</el-form-item>
<el-form-item class="btns">
<el-button type="primary">校验</el-button>
<el-button type="info">重置</el-button>
</el-form-item>
</el-form>
</div>
</template>
2. 增加FormRules的数据对象:required 必填项, message:提示, trigger: "blur" 鼠标选中
FormRules: {
username: [
{ required: true, message: "请输入用户名", trigger: "blur" }
],
password: [{ required: true, message: "请输入密码", trigger: "blur" }]
}
3. 检查效果

4. 重置表单
1. resetField:对该表单项进行重置,将其值重置为初始值并移除校验结果
2.对button绑定click事件
// tempalte
<el-button type="info" @click="resetForm">重置</el-button>
// 行为区新增重置方法
methods: {
// 重置表单
resetForm() {
console.log(this);
}
}
3.增加ref 引用
<el-form :model="Form" :rules="FormRules" ref="FormRef" label-width="100px">

4. 重置方法
methods: {
// 重置表单
resetForm() {
console.log(this);
this.$refs.FormRef.resetFields()
}
}
5.实现效果


5. 表单预验证
1.validate: valid第一个为行参,返回布尔值,如果不通过False, 通过则是true
// 预验证
validForm() {
this.$refs.FormRef.validate( valid => {
console.log(valid)
})
}
2. 实现效果

github: https://github.com/wangxiao9/vue_coding.git