【问题标题】:How to highlight border color of input when on validation error in Vue.js?在 Vue.js 中出现验证错误时如何突出显示输入的边框颜色?
【发布时间】:2021-05-31 16:17:57
【问题描述】:

mobile: '',
  maxmobile: 10,

  validations: {


    mobile: {
     
    },
  }
<input class="input-mobile ml-10" type="text" placeholder="Your mobile number" id="mobile" name="mobile" v-model="mobile" v-on:keypress="isMobileLanding($event)" :maxlength="maxmobile" v-model.trim="$v.mobile.$model" v-bind:class="{'input-color-change': $v.mobile.$invalid}"
  @input="$v.mobile.$touch" />

<p v-if="$v.mobile.$dirty">
  <span class="form__alert" v-if="!$v.mobile.numeric">Must be numeric.</span>
  <span class="form__alert" v-if="$v.mobile.numeric && !$v.mobile.between">
        Must be between {{$v.mobile.$params.between.min}} and {{$v.mobile.$params.between.max}}.
      </span>
</p>

如何在 Vue.js 中验证错误时突出显示输入的边框颜色?

目前我的代码有问题。最初,输入边框被突出显示,但我只想在用户输入少于 10 位数的手机号码时突出显示它。如果用户输入所有 10 位数字,则不应出现边框颜色。

【问题讨论】:

  • 显示代码时请提供所有代码。例如isMobileLanding
  • 嗨,尝试使用类绑定。
  • @MichaelMano 我已经为 isMobileLanding() 提供了代码,我通常会检查正则表达式
  • @YashMaheshwari 我已经更新了有问题的代码,即使我也尝试使用 v-bind 类但它没有,有什么建议吗?

标签: javascript vue.js


【解决方案1】:
<template>
  <input
    id="mobile"
    v-model="mobile"
    v-model.trim="$v.mobile.$model"
    :class="['input-mobile ml-10', mobileIsValid ? null : 'input-color-change']"
    type="text"
    placeholder="Your mobile number"
    name="mobile"
    :maxlength="maxmobile"
    @keypress="isMobileLanding($event)"
  />
  <div v-if="!mobileIsValid" class="error-messages">
    Kindly check phone is above {{ validations.mobile.minLength }} and blow
    {{ validations.mobile.maxLength }}.
  </div>
</template>

<script>
export default {
  data() {
    return {
      maxmobile: 10,
      mobile: '',
      validations: {
        mobile: {
          required,
          minLength: minLength(10),
          maxLength: maxLength(9),
        },
        email: {
          required,
          email,
          maxLength: maxLength(30),
        },
      },
    }
  },
  computed: {
    mobileIsValid() {
      return (
        this.mobile.length >= this.validations.mobile.minLength &&
        this.mobile.length <= this.validations.mobile.maxLength
      )
    },
  },
}
</script>

【讨论】:

  • 获取类型错误:无法读取未定义的属性“移动”。这行validations.mobile.minLength中的错误消息div中提到
  • 这个例子确实有几个根元素。
  • @kissu 取决于 vue 版本,例如3几根就好了。另外我没想到他们会复制粘贴代码。只是关于如何做的一般想法。
  • @mich 是的,是的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-18
  • 1970-01-01
  • 1970-01-01
  • 2021-12-20
  • 2018-01-06
  • 2022-12-05
相关资源
最近更新 更多