【问题标题】:Vuetify form validation, validation Error message not getting displayedVuetify 表单验证,验证错误消息未显示
【发布时间】:2019-06-11 22:36:09
【问题描述】:

使用 Vuetify 表单验证,未显示验证错误消息。

我正在使用 Vue.jsVuetifyTypeScript。我试图验证表单,但没有显示我的验证消息。尽管该领域正在变成红色。我还可以看到错误函数被调用

<template>
  <v-layout row justify-center>
    <v-dialog v-model="show" persistent max-width="600px">
      <v-card>
        <v-card-title>
          <span class="headline">Testing validations</span>
        </v-card-title>
        <v-card-text>
          <v-container grid-list-md>
            <v-form v-model="form.valid" ref="form">
              <v-layout wrap>
                <v-flex xs12>
                  <v-text-field
                    label="Checklist Name"
                    v-model="list.name"
                    :rules="[errorFunc]"
                    name="checklist"
                  ></v-text-field>
                </v-flex>
              </v-layout>
            </v-form>
          </v-container>
        </v-card-text>
        <v-card-actions>
          <v-spacer></v-spacer>
          <v-btn color="blue darken-1" flat @click="add">Save</v-btn>
          <v-btn color="blue darken-1" flat @click="show = false">Close</v-btn>
        </v-card-actions>
      </v-card>
    </v-dialog>
  </v-layout>
</template>
<script lang="ts">
  import { Component, Prop, Vue } from "vue-property-decorator";

  @Component({
    components: {}
  })
  export default class listForm extends Vue {
    @Prop() visible!: boolean;

    form = {
      valid: false
    };

    list = {
      name: ""
    };

    errorFunc() {
      let val: any;
      if (this.list.name.length >= 3) {
        val = true;
      } else {
        val = "Errorrrr";
      }
      console.log(val);
      return val;
    }

    get show() {
      return this.visible;
    }
    set show(value) {
      if (!value) {
        this.$emit("close");
      }
    }
    add() {
      if (this.$refs.form.validate()) {
        this.$emit("save", this.list);
      }
    }
  }
</script>

我不知道为什么我看不到验证错误消息。

【问题讨论】:

  • 请帮忙?

标签: typescript vue.js vuetify.js


【解决方案1】:

我知道在您的 v-text-field 中没有 hide-details 道具,但在我的情况下,这个道具阻止了消息。

【讨论】:

    【解决方案2】:

    我也遇到过同样的问题。 决定 - 将 css 属性 display: block; 添加到类 .v-text-field__details

    【讨论】:

      【解决方案3】:

      假设您的规则在控制台中记录了正确的错误消息,我看不出您的代码有任何问题,但这是我现在正在处理的项目中的一个工作示例。

        <v-text-field 
          v-model="data.editedItem.email" 
          label="Email" 
          :rules="[data.rules.required, data.rules.email]" 
        </v-text-field>
      

      规则在这里

        data: {
          rules: {
            required: value => !!value || "Required.",
            email: value => {
              const pattern = /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
              return pattern.test(value) || "Must be a valid e-mail.";
            }
          }
        }
      

      【讨论】:

      • 我还可以看到带有验证错误的 标记。只是在用户界面上看不到它
      • @user1739163 - 我在帖子中添加了我的 DOM 的屏幕截图。检查节点是否存在,但不可见。
      • 是的,我也可以看到节点。当我从下面的 css 中删除 display:none 时,它​​可以工作 .v-text-field__details { display: none; } 。我该如何解决?
      • @user1739163 - 我无法复制它。 v-text-field__details 总是 { display: flex; } 对我来说。我在层次结构中的任何地方都没有 display:none 。尝试向 error-messagesmessageshint 属性添加值。尝试添加 persistent-hint 属性。更多关于它们的信息:vuetifyjs.com/en/components/text-fields#api
      猜你喜欢
      • 2022-11-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-20
      • 1970-01-01
      • 2022-06-20
      • 2018-05-30
      • 2016-03-05
      相关资源
      最近更新 更多