首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用规则验证v-form中的v-text-field

使用规则验证v-form中的v-text-field
EN

Stack Overflow用户
提问于 2021-06-25 14:34:59
回答 1查看 174关注 0票数 0

我是vue的新手,我正在尝试让验证在v-text-field上工作。我有三个字段,2个可编辑的和一个不可编辑的,其中一个不是从其他两个计算出来的,但只有当它们有效时。因此,我有三个这样定义的字段(为了清楚起见,我将所有内容简化为A、B和C):

代码语言:javascript
复制
<v-form ref="stif-form">
      <v-row class="ma-4 mt-10 material-input">
        <v-text-field ref="a" sm v-model="A" label="A" dense suffix="kPa" :rules="[...floatRules,positiveRule]" />
      </v-row>
      <v-row class="ma-4 mt-10 material-input">
        <v-text-field ref="b" sm v-model="B" dense :rules="[...floatRules, positiveRule]"/>
      </v-row>
      <v-row class="ma-4 mt-10 material-input">
        <v-text-field sm v-model="C" label="C" disabled dense  />
      </v-row>
   </v-form>

然后我有3个属性,A,B,C,两个手表(使用typescript,所以这是装饰器,但这些等同于js手表)

代码语言:javascript
复制
 @Watch('A')
  onAChanged (a: number) {
    this.setC(a, this.B)
  }

@Watch('B')
   onBChanged (b: number) {
     this.setC(this.A, b)
   }

在setC中,我想通过查找这些字段并查看它们是否有效来确定A和B是否有效(而不是必须编写重复的代码来进行验证)。我已经尝试过了:

代码语言:javascript
复制
setC (a : number, b: number) {
    if (!(this.$refs['a'] as HTMLFormElement).hasError && 
        !(this.$refs['b'] as HTMLFormElement).hasError){
      this.C= (a+b).toFixed(2)
    }
    else this.C= ''
  }

正如您所期望的那样,hasError行工作并返回true和false,但hasError状态是针对上一次按键的,这意味着如果您键入无效的字符,则必须在将C设置为空之前键入另一个字符。我觉得我好像错过了什么。这方面的正确方法是什么?

EN

回答 1

Stack Overflow用户

发布于 2021-06-25 14:53:08

我有回答自己问题的习惯:)

验证是由表单执行的,因此通过执行以下操作,我将获得最新的验证:

代码语言:javascript
复制
setC (a : number, b: number) {
    if ((this.$refs['stif-form'] as HTMLFormElement).validate()){
      ...
    }
    else this.C= ''
  }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68126481

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档