vue-element 表单之登录页面使用
0. 先留下属性表格
表单验证:Form 组件提供了表单验证的功能,只需要通过 rules 属性传入约定的验证规则,并将 Form-Item 的 prop 属性设置为需校验的字段名即可。
1. 表单属性表(el-form)

2. 表单项属性表(el-form-item)

3. 表单方法表(el-form)

4. 表单校验
- 完整的表单校验需要三个组件完成配合,分别是el-form,el-form-item,表单项,如el-input- el-form 负责绑定model和rules (注意不是v-model,且是 :model和 :rules),还有绑定ref(是ref=“”)
- el-form-item 负责绑定prop
- el-input 负责双向绑定具体的表单数据 v-model
 
- 手动兜底校验
 详细校验请看这
5. 一个登录的页面(el-card\el-form\el-input\密码显示与隐藏\el-button\表单项校验\兜底校验\表单重置)
要使用的话记得导入element组件库和下载scss哦!
<template>
  <div class="login-page">
    <el-card>
      <template #header> 登录页面 </template>
      <el-form
        ref="formRef"
        :model="formData"
        :rules="formDataRules"
        label-width="80px"
        label-position="left"
      >
        <el-form-item label="用户名:" prop="username">
          <el-input
            type="text"
            name="username"
            v-model="formData.username"
            placeholder="请输入用户名"
          >
          </el-input>
        </el-form-item>
        <!-- show-password 最右边的显示隐藏密码 -->
        <el-form-item label="密码:" prop="password">
          <el-input
            type="password"
            placeholder="请输入密码"
            name="password"
            v-model="formData.password"
            show-password
          ></el-input>
        </el-form-item>
        <el-button type="primary" @click="doLogin">登录</el-button>
        <el-button @click="doReset">重置</el-button>
      </el-form>
    </el-card>
  </div>
</template>
<script>
export default {
  name: 'login-page',
  data () {
    return {
      formData: {
        username: '',
        password: ''
      },
      formDataRules: {
        username: [
          { required: true, message: '用户名不能为空', trigger: 'blur' }
        ],
        password: [
          { required: true, message: '密码不能为空', trigger: 'blur' },
          { pattern: /^\d{6,10}$/, message: '密码为6-10位', trigger: 'blur' }
        ]
      }
    }
  },
  methods: {
    doLogin () {
      this.$refs.formRef.validate((valid) => {
        if (valid) {
          console.log(valid)
        }
      })
    },
    doReset () {
      this.$refs.formRef.resetFields()
    }
  }
}
</script>
<style lang="scss" scoped>
.login-page {
  min-height: 100px;
  align-items: center;
  justify-content: space-around;
  .el-card {
    width: 420px;
    text-align: center;
    margin: 50px auto;
    // scss的深度选择器:当我们给组件设置scoped的时候,此时我们组件的css样式只会对自己的内容生效,不会对子组件里面的内容生效。
    ::v-deep .el-card__header {
      height: 60px;
      background-color: #409eff;
      color: aliceblue;
      font-size: 24px;
      line-height: 30px;
    }
  }
  .el-form {
    padding: 0 20px;
  }
}
</style>
效果图:
 
表单属性图来自:element组件之form表单,在此表示感谢!



















