vue.js之Vue指令更新模糊输入

程序猿 阅读:216 2024-12-31 21:38:35 评论:0

我正在尝试实现一个指令,该指令将在模糊事件上修剪输入的值:

import { DirectiveOptions } from "vue"; 
 
const Autotrim: DirectiveOptions = { 
    inserted(el) { 
        if(!(el instanceof HTMLInputElement) && !(el instanceof HTMLTextAreaElement)) { 
            throw 'Cannot apply v-autotrim directive to a non-input element!'; 
        } 
 
        el.addEventListener('blur', () => { 
           if(el.value) 
               el.value = el.value.trim(); 
        }); 
    } 
}; 

输入已更新,但模型中的绑定(bind)值未更新,并且在组件中其他地方发生任何更改后,它会恢复到未修剪状态。

确保模型也得到更新的正确方法是什么?

EDIT 这里有一个 codepen 链接可以尝试: https://codepen.io/impworks/pen/mddMPyx

请您参考如下方法:

您需要触发 input 事件 让 Vue 知道值已更改。

一旦检测到输入值与当前值不同(以避免无限递归)就执行此操作

if (el.value && el.value !== el.value.trim()) { 
    el.value = el.value.trim(); 
    el.dispatchEvent(new Event('input')); 
} 


标签:VUE
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号