ElementUI实现表单校验

750 阅读1分钟

ElementUI实现表单校验

表单校验步骤
1.给表单el-form添加校验规则字段rules并动态绑定一个对象(对象可自定义,此处定义为rules)
2.在script里面加入rules对象,并要求校验的字段写进去,固定格式

例如:message的值可以自定义,blur表示表单失去焦点触发校验
username:[{required:true,message:'请输入用户名',trigger:'blur'}],

3.添加prop属性,在对应的el-form-item标签上我们让prop等于rules里面相对应的字段值
上述操作表单校验功能已有,如果想添加点击事件,通过提交来向用户显示校验结果,可以执行一下步骤
4.给el-form添加ref属性,属性值可以自行定义,例如LogForm
5.给button按钮添加一个点击事件
6.在methods方法里面实现点击事件
7.通过this.$refs.LogForm.validate()处理校验结果 (LoginForm是第四不中的属性值)
代码如图示:

<template>
  <div>
  <!--第一步:加上rules属性即开启表单验证规则,rules动态绑定了一个对象,对象在script里面定义,对象里面包含的是要验证的表单字段-->
  <!--第四步:ref相当于给了el-form一个验证的时候使用的唯一名称-->
  <!--model让表单动态绑定一个数据对象-->
  
    <el-form :rules="rules" ref="loginForm" :model="loginForm" class="loginContainer">
    <h3 class="loginTitle">系统登录</h3>
    
    <!--第三步:prop的值与rules里面要验证的字段值是对应的,在对应的标签上我们让prop等于rules里面对应的字段值-->
    <el-form-item prop="username">
      <el-input type="text" auto-complete="false" v-model="loginForm.username" placeholder="请输入用户名"></el-input>
    </el-form-item>
    <el-form-item prop="password">
      <el-input type="password" auto-complete="false" v-model="loginForm.password" placeholder="请输入用密码"></el-input>
    </el-form-item>
    <!--第五步:@click绑定了一个点击事件-->
      <el-button type="primary" style="width: 100%" @click="submitLogin">登录</el-button>
    </el-form>
  </div>
</template>
<script>
    export default {
        name: "Login",
        data(){
          return {
            loginForm: {
              username: 'admin',
              password: '123',
            },
            //第二步:我们把要进行验证的字段都放进rules对象里
            rules:{
              username:[{required:true,message:'请输入用户名',trigger:'blur'}],
              password:[{required:true,message:'请输入密码',trigger:'blur'}],
            }
          }
        },
      methods:{
          //第六步:点击事件
          submitLogin() {
          //第七步:
          //这里refs.后面的loginForm与el-form表单中的ref属性值是对应的
          //validate:对整个表单进行校验的方法,参数为一个回调函数。这里给了一个返回值valid,为Boolean类型,表示校验是否成功
          
            this.$refs.loginForm.validate((valid)=>{
              if (valid){
                this.$message({
                  message: '登录成功!',
                  type: 'success'
                });
              }else{
                this.$message.error('登录失败!')
                return false;
              }
            })
          }
      }
    }
</script>
<style scoped>
.loginContainer{
  border-radius:15px ;
  background-clip:padding-box ;
  margin: 180px auto;
  padding: 15px 35px;
  background: white;
  border: 1px solid #eaeaea;
  box-shadow:0 0 25px #cac6c6 ;
  width: 350px;

}
  .loginTitle{
    margin: 2px auto 20px auto;
    text-align: center;
  }
  .rememberMe{
    width: 100%;
    margin: 9px auto;
  }
</style>