vee-validate清空必填input如何不触发验证?

问题是这样的,页面上有一个输入框,输入购买数量,但是购买成功后,希望清空这个输入框:

问题:
清空框后,会自动提示验证错误信息,但是并不希望这样,改怎么处理呢?

如下:

<input type="text" name="quantity" v-validate="'required|qtyRule'" v-model.trim="qty" :placeholder="请输入购买数量">

如下代码模拟了用户操作:

    this.qty = 10;//假设购买数量为10
    setTimeout(() => {
      this.qty = '';//购买成功提示,5s后清空购买数量
      
      //测试如下方式清空错误,但是都不成功
      //console.log(this.errors)
      //console.log(this.$validator.errors)
      //this.$validator.remove("quantity")

    }, 5000);

补充:

感觉this.$validatorthis.errors这些都是延迟对象吧,在调试的时候,thisthis.$validatorthis.errors都返回undefined,但是控制台却有输出!

阅读 12.4k
5 个回答

找到了两种方式:
1、动态验证指令

v-validate="`${(alertType != 'smail' && !isShowAlertDialog) ? 'required|' : ''}quantityRule`"

这种方式缺点明显,依赖了变量,使得逻辑更为复杂(不利于维护);并且当,依赖的变量为false时,立马也会触发验证。

2、设置为空后,直接清除错误信息(不知道为什么,官网api都是clear(),而这个对象里面的方法确实clean())

this.amount = '';
this.$validator.clean();

v-validate的触发都有个事件,比如“foucs”、“blur”、“change”,
你可以改变触发方式或者校验规则。
也可以通过转换标签模式来规避这个问题

我也遇到这个问题 请问楼主怎么解决的呢

利用vue的v-if特性在nextTick后刷新,再清空数据不会验证。但是我使用的场景是切换后全部清除。不知道有没有用

`
this.$validator.remove("quantity")`

改成
`
this.$validator.errors.remove("quantity")`

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题