无法验证 el-select elementUI

Cannot validate el-select elementUI

我正在尝试使用 el-select 创建自定义验证,方式如下:

在我的模板中:

 <el-form ref="form" >
<el-form-item   prop="fieldProp" >
    <el-select class="dialog-select" v-model="informationForm.age"  @change="validateDropdown" 
    placeholder="age" style="width: 100%"  >
      <el-option label="11" value="1"></el-option>
      <el-option label="22" value="2"></el-option>
    </el-select>
  </el-form-item>
</el-form>

在数据中:

   data() {
        let  checkCurrency = (rule, value, callback) => {
            if (!value) {
                return callback(new Error('Please input the age'));
            }
        };
        return {
                fieldProp: [
                    { validator: checkCurrency, trigger: 'change' }
                ]
              }
         } 

在我的方法中:

validateDropdown() {
            this.$refs.form.validateField('fieldProp')
        }

并调用验证方法:在提交中

   submit() {
            this.validateDropdown(); 
        }

但是没有任何反应。有什么想法吗?

我鼓励您阅读有关(自定义)表单验证的元素 ui 文档:https://element.eleme.io/#/en-US/component/form#custom-validation-rules

在您的情况下,您应该向表单添加 modelrules 道具,然后使用正确的 validate 方法。

示例代码:

<el-form ref="form" :model="informationForm" :rules="rules">
  <el-form-item prop="age" >
    <el-select class="dialog-select" v-model="informationForm.age" placeholder="age" style="width: 100%">
      <el-option label="11" value="1"></el-option>
      <el-option label="22" value="2"></el-option>
    </el-select>
  </el-form-item>
</el-form>
   data() {
        let  checkCurrency = (rule, value, callback) => {
            if (!value) {
                return callback(new Error('Please input the age'));
            }
        };
        return {
          rules: {
            fieldProp: [
              { required: true, validator: checkCurrency, trigger: 'change' }
            ]
          }
        }
   }

不需要 validateDropdown,因为您的字段已经在每个 change 上验证,这要归功于:trigger: 'change'.

submit() {
  this.$refs.form.validate((valid) => {
    if (valid) {
      // todo
    } else {
      // todo
    }
  });
}