Javascript: 'Issue?' 在文本框中以千位数字更新用户输入

标签 javascript jquery regex

我正在检查此代码,该代码是在此处询问的一个问题上找到的,该问题涉及在用户键入数字时添加逗号。

$('input.number').keyup(function(event) {
  // skip for arrow keys
  if(event.which >= 37 && event.which <= 40) return;
  // format number
  $(this).val(function(index, value) {
    return value
    .replace(/\D/g, "")
    .replace(/\B(?=(\d{3})+(?!\d))/g, ",");
  });
});

~@macek

箭头键跳过工作正常,其余部分。 唯一的问题是当你在两者之间输入或更新数字让我输入

"1234789"

请注意,当我尝试更新并输入 5 和 6 结果为 “123,457,896” 时,我现在没有数字 5 和 6 来完成数字 1 到 9。 6 之所以转到最后一部分是因为在按下第二个键时光标自动移动到最后一部分。

有没有办法让光标停留在当前位置?我不确定这是否是因为 keyup 函数 另外我想解决的是如何使 (CTRL + A) Copy All 文本工作?

顺便说一下,我还没有在正则表达式中使用过,但是上面例子中给出的对正则表达式的更深入的解释是一个加号:)

最佳答案

此方法使用 toLocaleString 在更改后重新格式化数字。由于未传递区域设置,因此将使用浏览器的默认设置,每个用户都应该熟悉。

document.getElementById("num-input").addEventListener("change", function(event) {
  var intVal = parseInt(this.value);
  if (!isNaN(intVal)) {
    this.value = intVal.toLocaleString();
  }
  console.log(this.value);
});

关于Javascript: 'Issue?' 在文本框中以千位数字更新用户输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36274528/

相关文章:

javascript - 使用代码将视频添加到网站的方法

javascript - 如何构建一个 jQuery 支持的切换器来添加/删除 css 属性?

javascript - 如何拆分这个正则表达式以使其更具可读性?

javascript - javascript regex .match 只找到一个结果

javascript - 显示全屏图像 100% 高度和 100% 宽度但能够向下滚动

javascript - 两个循环遍历日期

javascript - l20n.js - 如何从 javascript 访问本地化子实体

regex - 字符串的正则表达式,后跟括号中的参数

javascript - ComponentWillMount 触发不停止?

javascript - 绕过 Babel 将 ES6 "this"重新映射到 undefined