【问题标题】:Problems with validation before submit提交前验证问题
【发布时间】:2019-11-26 14:32:27
【问题描述】:

我正在尝试从 VeeValidate 文档中获取一个示例来工作。可以找到here。我显然错过了一些东西,但我不知道是什么。

我的表单始终有效,即使我没有在输入中添加任何文本。我是否需要以某种方式自定义所需的规则? CodeSandbox

<template>
  <ValidationObserver ref="observer" v-slot="{ invalid }" tag="form" @submit.prevent="submit()">
    <input type="text" rules="required">
    <br>
    <input type="text" rules="required">
    <br>
    <button :disabled="invalid">Submit</button>
  </ValidationObserver>
</template>

<script>
import { ValidationObserver } from "vee-validate";

export default {
  components: {
    ValidationObserver
  },
  methods: {
    async submit() {
      const isValid = await this.$refs.observer.validate();

      console.log("Form is valid", isValid);

      if (!isValid) {
        // ABORT!!
      }

      // ???? ship it
    }
  }
};
</script>

【问题讨论】:

  • 您好,您的问题应该直接包含所有相关代码。有代码沙箱的链接很好,但如果链接变坏,目标也是让您的问题“独立”。
  • 您好,感谢您指出这一点。我用代码更新了我的问题。

标签: javascript validation vue.js vee-validate


【解决方案1】:

每个输入都需要包装在ValidationProvider 中。改变这个:

<input type="text" rules="required">

到这里:

<ValidationProvider rules="required">
    <input type="text" rules="required" v-model="something">
</ValidationProvider>

另外,在某个地方,你需要真正定义你想要使用的规则,所以在文件的顶部我放了这个:

import { ValidationObserver, ValidationProvider, extend } from "vee-validate";
import { required } from 'vee-validate/dist/rules';

extend('required',required);

您的代码沙箱的工作副本(我还更新了 vee-validate 和 vue 到最新版本):https://codesandbox.io/s/vue-template-dj9jn

要实际获得示例中提到的行为,不要使用ValidationObserver 的invalid 标志,而是尝试使用handleSubmit 方法,如下所示:

<ValidationObserver tag="form" v-slot="{handleSubmit}" @submit.prevent>
  ... 
  <button @click="handleSubmit(submit)">Submit</button>

你的提交函数看起来像这样:

submit() {
    //anything you do here will only be called when the form is valid
}

【讨论】:

  • 谢谢,我试试ValidationProvider 。我无法让您的 CodeSandbox 示例正常工作,我收到错误 _vm.handleSubmit is not a function。
  • 我更新了沙箱并编辑了答案...现在 handleSubmit 调用在表单内的按钮上,而不是直接在 ValidationObserver 上
猜你喜欢
  • 2014-02-12
  • 2016-12-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多