首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在vuelidate中动态设置验证字段?

如何在vuelidate中动态设置验证字段?
EN

Stack Overflow用户
提问于 2017-11-12 15:54:40
回答 2查看 22.8K关注 0票数 12

我正在使用VueJS2和武伊林库。我可以根据验证对象验证字段。验证将在计算时间内执行。但是我的验证对象是固定的,而不是动态的。我有一些字段将根据选择隐藏。

代码语言:javascript
复制
import { validationMixin } from 'vuelidate'
import { required, maxLength, email } from 'vuelidate/lib/validators'

export default {
mixins: [validationMixin],
validations: {
  company_name: { required },
  company_position_title: { required }
},
methods: {
  submit(){
    this.$v.touch();
    if(this.$v.$invalid == false){ 
      // All validation fields success
    }
  }
}
}

代码语言:javascript
复制
<v-select
  label="Who are you?"
  v-model="select" // can be 'company' or 'others'
  :items="items"
  :error-messages="selectErrors"
  @change="$v.select.$touch();resetInfoFields();"
  @blur="$v.select.$touch()"
  required
></v-select>

<v-text-field
  label="Company Name"
  v-model="company_name"
  :error-messages="companyNameErrors"
  :counter="150"
  @input="$v.companyName.$touch()"
  @blur="$v.companyName.$touch()"
  v-show="select == 'Company'"
></v-text-field>

<v-text-field
  label="Company Position Title"
  v-model="company_position_title"
  :error-messages="companyPositionErrors"
  :counter="150"
  @input="$v.companyPosition.$touch()"
  @blur="$v.companyPosition.$touch()"
  v-show="select == 'Company'"
></v-text-field>

<v-btn @click="submit">submit</v-btn>

问题

当我选择“其他”选项并单击submit时,this.$v.$invalid仍然是真的。它应该是假的,因为不需要验证字段。当我选择'company‘时,这两个字段必须是必需的和有效的。

EN

回答 2

Stack Overflow用户

发布于 2017-12-04 14:56:36

您需要一个动态验证模式。

代码语言:javascript
复制
validations () {
  if (!this.select === 'company') {
    return {
      company_name: { required },
      company_position_title: { required }
    }
  }
}

更多信息:动态验证模式

票数 14
EN

Stack Overflow用户

发布于 2018-09-20 22:10:44

另一种方法是使用requiredIf

代码语言:javascript
复制
itemtocheck: {
  requiredIf: requiredIf(function () {
    return this.myitem !== 'somevalue'
  }),
  minLength: minLength(2) },
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47250791

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档