el-input在对其原生input事件监听并修改双向绑定值时修改无效的问题

如题,场景为对于用户输入的空格以及分号进行监听,由于@keyup的空格监听会导致用户使用输入法输入时也会触发目标事件,所以改为input监听其输入的最后一位值。但当监听其原生事件input时会出现双向绑定的值修改了,未响应到页面的情况(目前只发现对于中文分号有此问题),解决方案是手动对event.target.value进行赋值,element-ui@2.15.0 仅作记录

当在 Vue 中使用 `el-input` 组件并尝试结合 `oninput` 或 `onkeyup` 事件监听器与 `v-model` 双向数据绑定时,可能会遇到一个问题。这是因为 `v-model` 实际上是在底层自动触发 `input` 事件的,而当你手动添加了如 `oninput` 或 `onkeyup` 进行特定处理(例如实时验证、计数等),你可能无意中阻止了原始的 `input` 事件的自然触发。 Vue 期望每次 `input` 事件发生时都能更新视图和数据模型同步。如果你直接操作 DOM 修改了输入值,并没有让 Vue 内部跟踪到这个变化,那么 `v-model` 的双向绑定就不再生效。 为了解决这个问题,你需要确保: 1. **不阻止原生input 事件**:避免在 `oninput` 或 `onkeyup` 中调用 `event.preventDefault()` 或 `event.stopPropagation()` 来阻止默认行为,这样 Vue 的双向绑定才能正常工作。 2. **手动触发更新**:如果需要对输入进行自定义处理后更新模型,你应该在事件回调中手动调用 `this.$set(this, 'modelProperty', inputValue)`,这会告诉 Vue 触发视图的重新渲染。 ```javascript <input v-model="modelValue" @input="handleInput"> ... methods: { handleInput(event) { // 不阻止事件 this.modelValue = event.target.value; // 或者手动触发更新 this.$set(this, 'modelValue', event.target.value); } } ``` 记住,使用 `v-model` 已经包含了大部分基本的输入事件处理,除非有特殊需求,否则一般情况下不需要另外添加 `oninput` 或 `onkeyup`。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值