【发布时间】:2018-09-19 01:40:06
【问题描述】:
我有一个输入,它工作正常:从服务器返回错误后,我看到{{value}}。
<div class="form-group">
<label class="col-md-8 control-label">Foo</label>
<input class="form-control" v-model="foo" :class="{' is-invalid': errors.foo}">
<div class="invalid-feedback" v-if="errors.foo">
<strong v-for="value in errors.foo">{{value}}</strong>
</div>
</div>
所以我猜,div 和 class="invalid-feedback" 从 display: none 变为 display: block 只有当 div div 具有 class="invalid-feedback" 在同一个 DOM 级别上 与<input class="form-control is-invalid">。
<div>
<input class="form-control" :class="{' is-invalid': errors.foo}">
<div class="invalid-feedback" v-if="errors.foo">
<!-- this example would work -->
</div>
</div>
<div>
<input class="form-control" :class="{' is-invalid': errors.foo}">
</div>
<div>
<div class="invalid-feedback" v-if="errors.foo">
<!-- this example would not work
because error div isn't on the same DOM level with input -->
</div>
</div>
我说的对吗?在docs 中没有找到关于 DOM 的任何内容。
如果是,当我想在 div 和 class="invalid-feedback" 中显示错误,但“已连接”输入不在同一个 DOM 级别时,什么解决方法适用于这种情况?其实我想让我的第二个例子工作。
更新:我可以在 <div class="invalid-feedback"> 所在的同一 DOM 级别添加一些 <div class="form-control" :class="{' is-invalid': errors.foo}" style="display: none;">,但它会是意大利面条代码。
【问题讨论】:
-
我不明白。你能澄清这个问题吗?你read the validation section in the docs了吗?
-
@ZimSystem 我有一个带有表单的 Vue 组件。表单内有一个非 html 标记,用于裁剪图像。该标签呈现一些
<canvas>、<input>和其他元素。当用户尝试提交没有附加图像的表单时,我想显示错误。我尝试在输入中添加class="form-control" :class="{' is-invalid': errors.foo}",但<div class="invalid-feedback" v-if="errors.foo">中的错误无论如何都不会显示 -
如果不显示,
errors.screenshot的值是多少? -
我认为这就是需要
.was-validated的父母的地方。 -
你说得对,放置反馈div的时候有放置要求。我用其他信息更新了我的答案
标签: html vue.js bootstrap-4