解决el-input使用onkeyuo后,v-model失效问题

问题描述:

输入中文el-input使用onkeyup做正则校验后,二次输入失去焦点获取的数值一直都是空字符串,解决办法,手动给该v-model属性进行赋值,如图

 <el-form-item label="结算金额:" prop="jsje">
                <el-input :disabled="srsxform.status=='0'||srsxform.status=='1'" v-model="srsxform.jsje" clearable
                          placeholder="请输入结算金额"
                          size="small"
                          class="right_input"
                          onkeyup="value=value.replace(/^\D*(\d*(?:\.\d{0,2})?).*$/g, '$1')"
                          style="width: 90%"
                          @blur="moneyFormat('jsje',$event)"
                ></el-input>
                <span style="margin-left: 7px">元</span>
              </el-form-item>

触发方法

 moneyFormat(name, event) {
      // 进行手动赋值
      this.srsxform[name] = event.target.value;
      if (this.srsxform[name] != "" && this.srsxform[name] != null) {
        if (this.srsxform[name].indexOf(",") != -1) {
          this.srsxform[name] = this.srsxform[name].replaceAll(",", "");
        }
        this.srsxform[name] = this.srsxform[name].replace(/^\D*(\d*(?:\.\d{0,2})?).*$/g, '$1');
        this.srsxform[name] = this.$comUtils.moneyFormat(this.srsxform[name]);
      }
    },

问题得到解决啦~

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 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=&quot;modelValue&quot; @input=&quot;handleInput&quot;> ... 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、付费专栏及课程。

余额充值