『前端日志』关于element-ui的表单校验validate返回的参数始终为true的问题

最近在用vue+element-ui做简单的项目,遇到了一个百度不到原因的问题(可能是我不会描述问题,也可能是没人犯这么蠢的问题):在用rules做表单验证的时候,validate函数的返回值valid一直是true,哪怕是错误的校验信息也是。放个官方的代码看一下:

<el-form :model="numberValidateForm" ref="numberValidateForm" label-width="100px" class="demo-ruleForm">
  <el-form-item
    label="年龄"
    prop="age"
    :rules="[
      { required: true, message: '年龄不能为空'},
      { type: 'number', message: '年龄必须为数字值'}
    ]"
  >
    <el-input type="age" v-model.number="numberValidateForm.age" autocomplete="off"></el-input>
  </el-form-item>
  <el-form-item>
    <el-button type="primary" @click="submitForm('numberValidateForm')">提交</el-button>
    <el-button @click="resetForm('numberValidateForm')">重置</el-button>
  </el-form-item>
</el-form>
<script>
  export default {
    data() {
      return {
        numberValidateForm: {
          age: ''
        }
      };
    },
    methods: {
      submitForm(formName) {
        this.$refs[formName].validate((valid) => { //就是这里的valid一直是true
          if (valid) {
            alert('submit!');
          } else {
            console.log('error submit!!');
            return false;
          }
        });
      },
      resetForm(formName) {
        this.$refs[formName].resetFields();
      }
    }
  }
</script>

最后发现是因为我自己的代码里写了多个el-form,虽然rules能够对每个el-form里的表单进行校验,但返回回来的valid只代表最后一个el-form的状态,最后我把所有代码放到一个el-form里就解决了…

element-ui 提供了很多表单校验的组件和方法,可以帮助开发者实现前端表单校验功能。 首先,element-ui 提供了一些内置的校验规则,比如必填项、最大长度、最小长度、数字等。你可以在表单组件中使用这些规则来进行校验。例如,在 el-form-item 中使用 prop 属性指定要校验的字段,在 el-input 中使用 rules 属性来设置校验规则,如下所示: ```html <template> <el-form @submit="handleSubmit"> <el-form-item label="用户名" prop="username"> <el-input v-model="form.username" placeholder="请输入用户名"></el-input> </el-form-item> <el-form-item label="密码" prop="password"> <el-input v-model="form.password" placeholder="请输入密码" type="password"></el-input> </el-form-item> <el-form-item> <el-button type="primary" native-type="submit">提交</el-button> </el-form-item> </el-form> </template> <script> export default { data() { return { form: { username: '', password: '' } } }, methods: { handleSubmit() { this.$refs.form.validate(valid => { if (valid) { // 表单校验通过,可以进行提交操作 // ... } else { // 表单校验不通过 return false; } }); } } } </script> ``` 上述代码中,通过设置 el-form-item 的 prop 属性来指定要校验的字段,在 el-input 中使用 rules 属性设置校验规则。在 handleSubmit 方法中,使用 this.$refs.form.validate 方法来触发表单校验,该方法接收一个回调函数,当表单校验通过时,回调函数中的 valid 参数true,否则为 false。 除了内置的校验规则,element-ui 还允许开发者自定义校验规则。你可以通过自定义校验函数来实现更复杂的校验逻辑。具体的自定义校验规则可以参考 element-ui 的官方文档。 希望以上内容能帮助到你,如果有任何问题,请随时提问。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值