【问题标题】:Using Vuetify validation text area for manual validation使用 Vuetify 验证文本区域进行手动验证
【发布时间】:2021-10-01 16:27:12
【问题描述】:

我有一个 Vuetify Web 应用程序的搜索框,当用户点击搜索图标时,表单字段会执行典型的验证规则,如果不符合这些正则表达式规范,则会应用消息。

我使用经过验证的输入进行发布请求,看看是否有任何结果从我们的数据库返回。如果结果确实返回我转到下一页,如果结果失败我想使用验证字段区域说 ID 不存在。

这可能吗? vuetify 是否提供了一种通过某种道具在此验证区域中显示自定义消息的方法?一直没找到。

【问题讨论】:

    标签: vue.js vuetify.js


    【解决方案1】:

    是的,你可以做到; Vuetify 文档有一个关于输入字段错误状态的部分:#error。我整理了一个sn-p来演示错误状态的控制:

    new Vue({
      el: '#app',
      vuetify: new Vuetify(),
      data() {
        return {
          validationProp: true,
        }
      },
    })
    <link href="https://fonts.googleapis.com/css?family=Roboto:100,300,400,500,700,900" rel="stylesheet">
    <link href="https://cdn.jsdelivr.net/npm/@mdi/font@4.x/css/materialdesignicons.min.css" rel="stylesheet">
    <link href="https://cdn.jsdelivr.net/npm/vuetify@2.x/dist/vuetify.min.css" rel="stylesheet">
    <script src="https://cdn.jsdelivr.net/npm/vue@2.x/dist/vue.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/vuetify@2.x/dist/vuetify.js"></script>
    
    <div id="app">
      <v-app>
        <v-main>
          <v-container>
            <v-row>
              <v-col>
                <v-text-field outlined v-bind="{
                    error: !validationProp,
                    ...(!validationProp && { 'error-messages': ['Fatal error'] })
                  }" />
              </v-col>
            </v-row>
            <v-row>
              <v-col>
                <v-btn @click="validationProp = !validationProp">
                  TOGGLE ERROR STATE
                </v-btn>
              </v-col>
            </v-row>
          </v-container>
        </v-main>
      </v-app>
    </div>

    唯一的问题是,如果我只是添加了error 属性,控件就可以工作,但是没有消息;如果我还添加了error-messages,那么控件就会停止工作——它一直处于错误状态。因此,我决定有条件地添加error-messages

    ...(!validationProp && { 'error-messages': ['Fatal error'] })
    

    编辑

    如果你想“以error-message为目标”,那么你只需要绑定一个变量而不是一个简单的字符串。

    根据下面的评论,编辑了sn-p:

    const DEFAULT_ERROR_MESSAGE = 'Default error message'
    
    new Vue({
      el: '#app',
      vuetify: new Vuetify(),
      data() {
        return {
          validationProp: true,
          errorMessage: DEFAULT_ERROR_MESSAGE,
        }
      },
    })
    <link href="https://fonts.googleapis.com/css?family=Roboto:100,300,400,500,700,900" rel="stylesheet">
    <link href="https://cdn.jsdelivr.net/npm/@mdi/font@4.x/css/materialdesignicons.min.css" rel="stylesheet">
    <link href="https://cdn.jsdelivr.net/npm/vuetify@2.x/dist/vuetify.min.css" rel="stylesheet">
    <script src="https://cdn.jsdelivr.net/npm/vue@2.x/dist/vue.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/vuetify@2.x/dist/vuetify.js"></script>
    
    <div id="app">
      <v-app>
        <v-main>
          <v-container>
            <v-row>
              <v-col>
                <v-text-field outlined label="Type here the error message you want" v-model="errorMessage" />
              </v-col>
            </v-row>
            <v-row>
              <v-col>
                <v-text-field outlined v-bind="{
                    error: !validationProp,
                    ...(!validationProp && { 'error-messages': [errorMessage] })
                  }" />
              </v-col>
            </v-row>
            <v-row>
              <v-col>
                <v-btn @click="validationProp = !validationProp">
                  TOGGLE ERROR STATE
                </v-btn>
              </v-col>
            </v-row>
          </v-container>
        </v-main>
      </v-app>
    </div>

    【讨论】:

    • 抱歉耽搁了,您能不能从脚本区域更改错误消息并直接修改组件而不是 v-bind?例如,我通常可以通过执行 this.loading = true 来定位 vuetify 中的按钮使加载为真,并且该按钮以加载属性为目标。我可以从脚本区域定位“错误消息”道具来设置消息吗?
    • @Bradyboyy88 添加了新版本的 sn-p。抱歉,我认为很明显您可以轻松地将String 更改为data attribute。现在,我添加了一个编辑版本,其中错误消息由一个新的输入字段控制(可以是您想要的任何字符串)
    猜你喜欢
    • 2011-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-28
    • 2011-12-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多