首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VeeValidate v3可防止单击模糊验证。

VeeValidate v3可防止单击模糊验证。
EN

Stack Overflow用户
提问于 2019-11-03 22:13:00
回答 2查看 1.6K关注 0票数 1

我在第一个领域有自动对焦的形式。我正在使用急切的验证模式。

问题是,当我单击页面上的任何位置时,输入会失去焦点并得到验证,并取消对页面的单击。

是否有办法允许虚值模糊,除非我在提交时手动调用验证?

我的代码片段:

代码语言:javascript
复制
<b-form-group id="input-group-2" label="Your name:" label-for="input-2">
    <validation-provider name="name" rules="required|min:2" mode="eager" v-slot="{ errors }">
        <b-form-input
            id="input-2"
            v-model="credentials.name"
            placeholder="Your name"
            :class="{'is-invalid' : errors.length}"
            autofocus
        />
        <b-form-invalid-feedback :state="!errors.length">{{errors[0]}}</b-form-invalid-feedback>
    </validation-provider>
</b-form-group>

EN

回答 2

Stack Overflow用户

发布于 2019-11-08 15:13:08

我想澄清一下,验证并不能阻止“点击”事件,只是当你点击外部的时候,你就模糊了这个字段。因此,当出现错误消息时,它会触发验证,它会将其他元素按下,这是因为它的行高,这会按下按钮/链接,从而导致您单击外部。

我想说的是,这不是一个vee验证问题,而是一个CSS问题,理想情况下,如果您在字段下面显示错误消息,您应该补偿额外的空间,以防止UI跳转,这对用户也是很烦人的。

一个简单的margin-bottom等于错误消息的行高,另一种方法是有一个带有相对包装器的绝对错误消息,有一个与线高相等的底部填充,并且它也能工作。

代码语言:javascript
复制
.InputMargin:not(.has-error) {
  margin-bottom: 16px;
}

.InputPadding:not(.has-error) {
  position: relative;
  padding-bottom: 16px;
}

.InputPadding:not(.has-error) span {
  position: absolute;
  bottom: 0;
  left: 0;
}

在这里查看示例:https://jsfiddle.net/logaretm/4mx0hy58/17/

现在,如果您选择的UI框架不能处理这种情况,您可以为他们进行公关,或者在他们的项目跟踪器中打开一个问题。

票数 2
EN

Stack Overflow用户

发布于 2019-11-08 15:25:41

最终避免了自动验证,切换到了passive模式,而不是急切。在配置文件中,下面一行:

代码语言:javascript
复制
setInteractionMode('passive');

我只是在提交时手动调用validate:

代码语言:javascript
复制
async onSubmit() {
  const isValid = await this.$refs.observer.validate();
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58685092

复制
相关文章

相似问题

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