Vee 验证返回 true,但应该返回 false

Posted

技术标签:

【中文标题】Vee 验证返回 true,但应该返回 false【英文标题】:Vee validate return true, but should return false 【发布时间】:2020-02-12 22:51:30 【问题描述】:

我正在使用 Vuetify,并且有一个表单,我使用 VeeValidate 进行表单验证... 当我使用这个时:

this.$validator.validateAll().then((result) => 
            console.log("result form", result);
            //result ? this.onSubmit() : scrollTo(0, 250);
        );

它总是返回 true,即使我的输入字段上的验证无效... 输入看起来像:

<v-textarea
    filled
    name="string"
    :label="placeholderText"
    auto-grow
    single-line
    :placeholder="placeholderText"
    v-model="answer"
    :required="isRequired"
    v-validate:computedProp="checkRequired"
    :error-messages="errors.collect('string')"
    data-vv-name="string"
    :hint="hintText"
    @blur="updateAnswer"
></v-textarea>

输入组件的代码:

export default 
$_veeValidate: 
    validator: 'new'
,
name: 'String',
props: 
    placeholderText: 
        default: 'Add a value'
    ,
    hintText: 
        default: 'Add a value'
    ,
    isRequired: 
        default: true
    
,
data: () => (
    answer: ''
),
computed: 
    checkRequired() 
        return this.isRequired ? 'required' : ''
    
,
methods: 
    updateAnswer() 
        this.$validator.validateAll();
        this.$emit('updateAnswer', this.answer);
    

我在另一个组件中调用 this.$validator.validateAll()...输入组件是一个独立组件...我将它全部包装在一个表单标签中,并在提交时运行验证功能

【问题讨论】:

checkRequired 不总是正确的吗? 'required' 和空字符串一样是真的吗?为什么不return this.isRequird ? true : false 【参考方案1】:

你有两个选择:

    将来自$attrs的v-validate传递给组件

    将 $validator 注入组件

家长

export default 
  name: "App",
  components: 
    YourComponent
  ,
  provide() 
    return 
      $validator: this.$validator
    ;
  ,

孩子

 $_veeValidate: 
    validator: "new"
  ,
  inject: ["$validator"],
  name: "String",

你也可以简化你的html代码,见VeeValidate Syntax

HTML

v-validate=" required: this.isRequired "

你可以安全地删除

:required="isRequired"

【讨论】:

不太管用...它在模糊时验证正确,但当我提交时仍然没有...可能是因为它不是直接孩子,而是一个盛大的盛大盛大孩子...向下 3-4 级... 向子组件提供/注入$validator

以上是关于Vee 验证返回 true,但应该返回 false的主要内容,如果未能解决你的问题,请参考以下文章

即使应该返回 false,循环也会返回 true

IF 在应该返回 TRUE 时返回 FALSE

当返回值应该为 true 时,二分查找一直返回 false

List.Contains 返回 false,即使它看起来应该返回 true

我想返回一个 true 或 false 的值,但强制它在 3% 的时间里随机返回 false [重复]

SDL2 - 应该返回 True 的函数评估为 False