javascript - 提交前验证问题

标签 javascript validation vue.js vee-validate

我正在尝试从 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>

最佳答案

每个输入都需要包装在 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

要真正获得示例中提到的行为,请尝试使用 handleSubmit 方法,而不是使用 ValidationObserverinvalid 标志,如下所示:

<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
}

关于javascript - 提交前验证问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59053224/

相关文章:

javascript - typeof object.constructor 总是返回一个函数。真的吗?

javascript - 在 JS 中添加 StyleSheet 并允许动态切换

javascript - 我可以在没有 RequireJS 的情况下使用 TypeScript 吗?

javascript - 使用正则表达式验证经纬度坐标然后显示错误

javascript - 在这个 vuejs 演示中如何传递参数?

javascript - 在常规 JavaScript 文件中导入 NodeJS 文件

javascript - 如何使用 sequelize 和 sqlite 验证 int 和 boolean

django - 使用 django ModelForm 显示错误

javascript - Vue watch[fat arrow scope] 提供了错误的 this 上下文

javascript - 如何将我的 Vue js SPA 部署到我的 Django 服务器中?