在移动响应上使用时,错误 keyup 会使字符加倍

Error keyup doubles characters when used on mobile responsive

我在创建输入时自动添加千位分隔符的函数时发现了一个键盘输入错误。在桌面浏览器上一切正常,但在移动响应上使用时会出错。下面是我使用的js代码:

$('input.number').keyup(function(event) {
  if(event.which >= 37 && event.which <= 40) return;
  $(this).val(function(index, value) {
    return value.replace(/\D/g, "").replace(/\B(?=(\d{3})+(?!\d))/g, ",")
    ;
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input class="number">
</input>

示例:我在计​​算机浏览器中键入 1000000,它显示正好是 1,000,000,但在移动响应式中显示为 100,010,000。

我在 Fiddle 上发现了另一个类似的代码,但同样的错误。我测试的phone也是AndroidOS版本7,Chrome的版本是93.0.4577.62

那么如何解决这个错误呢?有人对我有什么建议吗?任何建议表示赞赏!

非常感谢!

我已经在所有浏览器中进行了测试,一切正常。主要问题可能在于 S8 Plus 不常见的纵横比。如何修复:添加只要输入发生变化就会触发的输入事件。输入在桌面和手机上都有效。

$('input.money').on('keyup input',function(event) {
  //code
});

希望对遇到同样问题的小伙伴有所帮助。更多详情请见 jQuery Input Event