You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

点击按钮后无法重置Vue数据?含e的number输入框重置失效问题

解决Vue中Number类型输入框含'e'时重置失效的问题

我刚踩过一模一样的坑,这就给你拆解清楚原因和解决办法!

问题根源

当你在type="number"的输入框里输入'e'时,这个字符是合法的(它属于科学计数法的允许字符),此时Vue的v-model绑定的tax值会变成NaN(不是一个有效的数字)。当你调用reset方法把this.tax设为空字符串''时,Vue会自动尝试把空字符串转换为数字类型,结果依然是NaN——输入框识别到NaN后,并不会清空显示,所以看起来重置失效了。

解决方案

把重置的值改成null就可以完美解决!因为null会被number类型输入框正确解析为空状态,代码修改如下:

修改后的JavaScript代码

var app = new Vue({
  el: '#app',
  data: {
    tax: ''
  },
  methods: {
    reset() {
      this.tax = null // 把空字符串替换成null
    }
  }
})

HTML代码保持不变

<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<div id="app">
  <input v-model="tax" type="number" >
  <button @click="reset">Reset</button>
</div>

额外优化方案

如果你想从根源上避免这个问题,还可以阻止用户输入'e'这类科学计数法字符,给输入框加一个输入事件监听来过滤非数字内容:

// 输入框添加监听
<input v-model="tax" type="number" @input="filterNonNumber">

// 对应的过滤方法
methods: {
  filterNonNumber(e) {
    // 只保留数字和小数点
    e.target.value = e.target.value.replace(/[^0-9.]/g, '')
  },
  reset() {
    this.tax = ''
  }
}

这样既能避免'e'导致的重置异常,也能让输入框只接收纯数字输入~

内容的提问来源于stack exchange,提问作者Jack jdeoel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:09:27