Javascript 如何在自定义指令中短路v型?

Javascript 如何在自定义指令中短路v型?,javascript,vue.js,vuejs2,Javascript,Vue.js,Vuejs2,我想有一个自定义指令,我可以附加到任何,这将限制它仅限于alpha字符。以下是我目前掌握的情况: 但是,Vue.js文档说明: 除了el,您应该将这些参数视为只读参数,并且永远不要修改它们 因此,修改vnode是一种糟糕的模式。如何以不同的方式实现这一点?您可以这样做:您的指令有一个input处理程序,用于检查是否包含禁止的字符,如果包含,则将其删除并发出一个新的input事件,以便所有内容都会更新 重写字段值时光标移动到字段末尾的常见问题适用 Vue.directive('limiter'

我想有一个自定义指令,我可以附加到任何
,这将限制它仅限于alpha字符。以下是我目前掌握的情况:

但是,Vue.js文档说明:

除了
el
,您应该将这些参数视为只读参数,并且永远不要修改它们


因此,修改
vnode
是一种糟糕的模式。如何以不同的方式实现这一点?

您可以这样做:您的指令有一个
input
处理程序,用于检查是否包含禁止的字符,如果包含,则将其删除并发出一个新的
input
事件,以便所有内容都会更新

重写字段值时光标移动到字段末尾的常见问题适用

Vue.directive('limiter'{
插入(el、绑定、vnode){
el.addEventListener('input',event=>{
const newValue=event.target.value;
const cleaned=newValue.replace(/[^A-Za-z]/g',);
如果(新值!==已清理){
event.target.value=已清理;
event.target.dispatchEvent(新事件('input'));
}
});
}
});
新Vue({
el:“应用程序”,
数据(){
返回{
名称:“”,
};
}
})
正文{
背景:#20262E;
填充:20px;
字体系列:Helvetica;
}
#应用程序{
背景:#fff;
边界半径:4px;
填充:20px;
过渡:均为0.2s;
}
李{
利润率:8px0;
}
氢{
字体大小:粗体;
边缘底部:15px;
}
德尔{
颜色:rgba(0,0,0,0.3);
}

你的名字是{{name}。

我会选择一个。例如,您的将无法捕获粘贴的内容。@RoyJ这对我的用例不起作用<代码>模式仅在提交时生效。您能告诉我们为什么需要修改vnode吗?我看不出有什么理由我不想修改vnode。最终目标只是通过指令应用输入掩码。