前言

我就偷个懒直接贴代码了,关键地方都有注释,如果看不明白,那一定是我代码和注释写的有问题

 

方式一:通过给 el-form 表单绑定 rules 属性来实现

<template>
  <div>
    <el-form
      :inline="true"
      :model="formInline"
      :rules="rules"
      class="demo-form-inline"
      ref="form"
      status-icon
    >
      <el-form-item label="审批人" prop="user">
        <el-input v-model="formInline.user" placeholder="审批人"></el-input>
      </el-form-item>
      <el-form-item label="活动区域" prop="region">
        <el-select v-model="formInline.region" placeholder="活动区域">
          <el-option label="区域一" value="chengdu"></el-option>
          <el-option label="区域二" value="chongqing"></el-option>
        </el-select>
      </el-form-item>
      <el-form-item>
        <el-button type="primary" @click="onSubmit">查询</el-button>
      </el-form-item>
    </el-form>
  </div>
</template>

<script>
export default {
  name: "Form",
  data() {
    return {
      formInline: {
        user: "",
        region: "",
      },
      rules: {
        // 这里的 user 不是和 data() 中的 user 对应,而是和 el-form-item 中的 prop 属性对应,prop="user"
        // Form 组件提供了表单验证的功能,只需要通过 rules 属性传入约定的验证规则,并将 Form-Item 的 prop 属性设置为需校验的字段名即可
        user: [
          { required: true, trigger: "change", message: "用户名不能为空" } // required 是否为必填
        ]
      }
    }
  },
  methods: {
    onSubmit() {
      console.log('submit');
    }
  }
}
</script>

<style lang="scss" scoped>
</style>

 

方法二:通过 validator 属性设置一个方法,在该方法中进行校验

<template>
  <div>
    <el-form
      :inline="true"
      :model="formInline"
      :rules="rules"
      class="demo-form-inline"
      ref="form"
      status-icon
    >
      <el-form-item label="审批人" prop="user">
        <el-input v-model="formInline.user" placeholder="审批人"></el-input>
      </el-form-item>
      <el-form-item label="活动区域" prop="region">
        <el-select v-model="formInline.region" placeholder="活动区域">
          <el-option label="区域一" value="chengdu"></el-option>
          <el-option label="区域二" value="chongqing"></el-option>
        </el-select>
      </el-form-item>
      <el-form-item>
        <el-button type="primary" @click="onSubmit">查询</el-button>
      </el-form-item>
    </el-form>
  </div>
</template>

<script>
export default {
  name: "Form",
  data() {
    const userValidator = (rule, value, callback) => {
      if (value.length > 3) {
        callback(); // 表示验证通过
      } else {
        callback(new Error("用户名长度必须大于3"));
      }
    }
    return {
      formInline: {
        user: "",
        region: "",
      },
      rules: {
        // 这里的 user 不是和 data() 中的 user 对应,而是和 el-form-item 中的 prop 属性对应,prop="user"
        // Form 组件提供了表单验证的功能,只需要通过 rules 属性传入约定的验证规则,并将 Form-Item 的 prop 属性设置为需校验的字段名即可
        user: [
          { validator: userValidator, trigger: "change" } // 手动校验的方法
        ]
      }
    }
  },
  methods: {
    onSubmit() {
      console.log("submit");
    }
  }
}
</script>

<style lang="scss" scoped>
</style>

 

如果想要在表单提交时也做校验,在 el-form 组件上绑定 ref="form" , 这里的 form 值为自定义,

然后 this.$refs.form 直接获取到整个表单,并调用 validate(), 分别传入 2 个参数,

否通过验证和未通过验证的字段,未通过验证的字段就是错误提示信息,如,用户名不能为空,用户名长度必须大于3

 

 

 

有需要的朋友可以领取支付宝到店红包,能省一点是一点