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

如何去除粘贴字符串的小数点?JavaScript粘贴事件异常排查

问题原因

你遇到的问题核心是没有阻止默认的粘贴行为:

  • 触发paste事件时,你在else分支里直接设置了处理后的值,但未调用e.preventDefault(),浏览器会在你的代码执行完成后,自动执行默认粘贴操作——把剪贴板里原始的11.11粘贴到输入框。
  • 最终结果就是你设置的1111和浏览器默认粘贴的11.11拼接在一起,变成了111111.11。
修复方案

修改代码,在else分支里也加上e.preventDefault(),先阻止默认粘贴行为,再设置处理后的值:

$(document).ready(function () {
  $('#MY_IG_ig > div.a-IG-body').on('paste', function (e) {

    var clipboardData, pastedData;
    clipboardData = e.originalEvent.clipboardData || window.clipboardData;
    pastedData = clipboardData.getData('Text');
  
    pastedData = pastedData.split('.').join('');
  
    if (!/^\d+$/.test(pastedData)) {
      e.preventDefault();
      alert('Enter a valid number!');
    } else {
      e.preventDefault(); // 阻止默认粘贴行为
      $(e.target).val(pastedData);
    }
  });
});
额外说明
  • 不管粘贴内容是否合法,都需要阻止默认行为:合法时手动设置处理后的值,不合法时阻止粘贴并提示,这样就能避免默认行为和自定义逻辑冲突。
  • 测试时可在else分支打印$(e.target).val(),确认设置后的值不会被默认粘贴覆盖。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 22:07:15