当前位置: 首页 > 知识库问答 >
问题:

Vee跨多个字段验证

蔡修远
2023-03-14

我如何验证一个列表的值跨字段,其中至少一个单一的值必须设置(不是零)

我需要验证至少有一个字段被输入(例如总数不是零)

我遇到的问题是,当任何一个字段发生更改时,validator::total_cost不会重新评估所有正在验证的字段。

在“任意”输入中键入正确的值需要告诉“所有”其他输入,以便根据新的计算字段重新估价!

任何帮助都将不胜感激。

(我的电视机大得多)

 V1  V2  V3  V4  V5          Tot
[0] [0] [0] [0] [0] -------- [0] (invalid)  
[0] [0] [0] [0] [1] -------- [1] (valid)
[1] [0] [0] [0] [1] -------- [2] (valid)
[0] [0] [1] [0] [1] -------- [3] (valid)

我正在使用的标记

<input type="text" v-model.number="v1" data-vv-as="v1" v-validate="anyValue":name="v1"/>

<input type="text" v-model.number="v1" data-vv-as="v2" v-validate="anyValue":name="v2"/>

<input type="text" v-model.number="v2" data-vv-as="v3" v-validate="anyValue":name="v3"/>

<input type="text" v-model.number="v3" data-vv-as="v4" v-validate="anyValue":name="v4"/>

<input type="text" v-model.number="v4" data-vv-as="v5" v-validate="anyValue":name="v5"/>

AnyValue是一个计算属性

 computed: {
    anyValue: function () {
        return {
           // required: true,
            between: [0, 99999999],
            decimal: 2,
            total_cost: this.totalCost /* THIS IS COMPUTED */
        }
    },
    totalCost: function () {
        return this.v1 + this.v2 + this.v3 + this.v4 + this.v5;           
    }
 created: function () {
    this.$validator.extend('total_cost', {
        vTotalCost:0,
        getMessage: function (field) { 
         return 'At least one value must be supplied'; 
        },
        validate: function (value) {
            this.vTotalCost = value;
            console.log("the value is " + this.vTotalCost);
            return this.vTotalCost != 0;                
        }
    });
},

共有1个答案

施茂
2023-03-14

首先,代码段中有一些错误:
您创建了一个名为total_cost的新vee validate规则,但没有将其绑定到v-validate指令(而是尝试传递一个计算属性)
使用v-validate=“'total_cost'”更改您的输入(注意total_cost绑定为字符串

现在,您可以使用Vee-验证(源)提供的any方法返回全局错误消息:

Vue.use(VeeValidate)

new Vue({
  el: "#app",
  data () {
    return { v1: 0, v2: 0, v3: 0, v4: 0, v5: 0 }
  },
  computed: {
    errorMsg() {
      if (this.errors.any()) {
      	return 'At least one value must be supplied'
      }
    }
  },
  created: function () {
    this.$validator.extend('total_cost', {
      vTotalCost:0,
      getMessage: function (field) { 
        return 'At least one value must be supplied'; 
      },
      validate: function (value) {
        this.vTotalCost = value;
        return this.vTotalCost != 0;                
      }
    })
  }
})
.has-error {
  color: red;
  font-size: 12px;
}
<script src="https://unpkg.com/vue@2.6.8/dist/vue.min.js"></script>
<script src="https://unpkg.com/vee-validate@2.0.0-beta.25"></script>
<div id="app">
  <input type="text" v-model.number="v1" data-vv-as="v1" v-validate="'total_cost'" name="v1"/>
  <input type="text" v-model.number="v2" data-vv-as="v2" v-validate="'total_cost'" name="v2"/>
  <input type="text" v-model.number="v3" data-vv-as="v3" v-validate="'total_cost'" name="v3"/>
  <input type="text" v-model.number="v4" data-vv-as="v4" v-validate="'total_cost'" name="v4"/>
  <input type="text" v-model.number="v5" data-vv-as="v5" v-validate="'total_cost'" name="v5"/>
  <p class="has-error">{{ errorMsg }}</p>
</div>
 类似资料:
  • 我已经使用extend from创建了自定义规则。所以我有这个 当为false且为true时,从上述代码中,它会被上一条规则覆盖,因此结果始终被视为true而不是false 那么我如何才能做到这一点呢? 规则:

  • 我刚接触vee validate。我想知道您如何验证按钮是否已按下。我已经用ValidationObserver包装了我的表单,其中有一个v形槽无效。我希望用户被要求选择一个按钮,这将允许用户继续到下一页。 代码验证观察员,我包装我的表单: 下面的代码是我需要知道如何设置用户从列表中选择按钮所需的验证。 和结束我的形式我有按钮,允许用户继续。该按钮将被禁用,直到表单完成并且没有验证错误。但我也想确

  • 问题内容: 我正在使用JPA 2.0 /hibernate验证来验证我的模型。我现在遇到一种情况,必须验证两个字段的组合: 该模型是无效的,如果都和都null和其他有效。 如何使用JPA 2.0 / Hibernate执行这种验证?使用简单的注释,两个吸气剂都必须为非null才能通过验证。 问题答案: 对于多属性验证,应使用类级别的约束。摘自 Bean Validation Sneak Peek第

  • 问题内容: 我刚刚开始测试JSR-303 Bean验证,并且想知道是否有可能。我们的应用程序中有一个用于所有String字段的默认正则表达式。如果我想使用bean验证来应用此功能,我想我需要在表单对象中注释每个字段。 一击是否可以将@Pattern应用于所有字符串(或某些字段)?我们正在WebLogic 10.3.4上使用Hibernate实现,并以JSF2.0为前端。验证应该独立于视图,因为我可

  • 我有两个数字字段来收集用户的数据。需要使用codeigniter表单验证类对其进行验证。 条件: 第一个字段可以为零 第二字段不能为零 第一字段不应等于第二字段 第二字段应大于第一字段 目前我使用 美元这个- 美元这个- 但是,如何验证上述第3和第4个条件? 提前谢谢。

  • 问题内容: 示例数据: 还有一个示例查询: 首先返回击中的猫,然后返回狗,这就是我想要的。 但是 当您查询时,猫和狗的相关性得分相同。我希望能够考虑到该单词的前缀(并且可能在该字段中添加了其他几个单词),然后运行。 因此,如果我搜索: 要么 我应该得到cat / ID 1,但没有。 我发现使用可以实现多词短语,但不能实现多不完整的短语。并获得不完整的短语,但不能获得多个不完整的短语… 筛选文档确实