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

Vue.js中如何禁止输入框接收'e'字符(含粘贴场景)

解决方案

你可以通过粘贴事件拦截+输入兜底过滤两个维度实现全场景禁止e/E字符输入,修改后的组件代码及对应逻辑如下:

组件模板修改

<vs-input
  :value="contract.value"
  :class="isMobileOnly ? 'w-full' : 'w-1/2'"
  class="mx-auto"
  type="number"
  :id="`value-${index}`"
  placeholder="Value"
  @keydown="handleKeydown"
  @paste="handlePaste"
  @input="handleInput"
  @change="changeValue(index)"
/>

删除原来的行内onkeydown属性,换成Vue事件绑定,新增粘贴、输入事件监听。

对应方法实现

  • 键盘输入拦截:同时兼容拦截小写e和大写E的手动输入
handleKeydown(e) {
  if(['e', 'E'].includes(e.key)) {
    e.preventDefault()
  }
}
  • 粘贴事件拦截:读取粘贴板内容过滤后再插入,拦截粘贴场景的e字符
handlePaste(e) {
  e.preventDefault()
  const pasteText = (e.clipboardData || window.clipboardData).getData('text')
  const filteredText = pasteText.replace(/[eE]/g, '')
  document.execCommand('insertText', false, filteredText)
}
  • 输入事件兜底:覆盖拖拽输入、输入法联想等极端场景,从值层面强制过滤e字符
handleInput(val) {
  this.contract.value = val.replace(/[eE]/g, '')
}

如果你的项目是Vue3,只需要把this.contract.value的赋值逻辑改成对应的响应式变量写法即可。


内容的提问来源于stack exchange,提问作者Abdullah Ch

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 13:45:04