【发布时间】:2021-04-21 16:33:12
【问题描述】:
我遇到了一些使用自定义“就地编辑”Vuetify 文本输入的添加情况。我注意到在输入键的 keyup 上,有两个请求被发送到我的后端以更新该字段。我知道是什么导致了这个问题,只是不知道如何解决它!
我有这个文本字段:
<v-text-field
:id="uniqueIdentifier"
:ref="uniqueIdentifier"
v-focus
v-mask="mask"
:class="[ 'click-to-edit', active ? 'active' : 'b-none', customClass ]"
color="primary"
dense
:full-width="false"
hide-details
outlined
:style="{...customStyle}"
:type="type"
:value="localValue"
@blur="handleUpdateItem($event)"
@click="activateInput"
@keyup.enter.native="handleUpdateItem($event)" />
如您所见,我同时触发了@blur 和@keyup.enter.native 事件来更新文本字段。更新字段的方法如下:
handleUpdateItem (e) {
this.localValue = e.target.value;
this.active = false;
this.$emit('handle-update-item', this.localValue);
// if (e.type === 'keyup') { this.$refs[this.uniqueIdentifier].blur(); }
// if (e.type === 'keyup') { this.active = false; }
}
该方法的最后两行被注释掉是我的尝试,旨在“停用”点击输入时的输入,但是由于第一行随后运行.blur(),因此文本字段运行此功能第二次。第二行在输入中仍然有闪烁的光标,所以它也不是真正的“停用”。
最终,我正在寻找一种允许用户按 Enter 键或在输入外部单击以触发请求(显然没有触发两次)并停用输入的方法。有人有什么建议吗?
【问题讨论】:
标签: vue.js vuetify.js