【问题标题】:Add space separator to number in input box, with saving cursor输入框中的数字添加空格分隔符,并保存光标
【发布时间】:2020-12-20 13:42:38
【问题描述】:
<html>
 <body>
   <input type="text" keyup="_onSearchKeyUp">
 </body>
</html>

我正在尝试获取一个输入框来显示带有空格分隔符的数字。像这样:1234567891 和 123 456 789 10(每 3 个符号)。

我写了这段代码:

        _onSearchKeyUp: function (event) {
        let value = this._getValue();
        var parts = value.split(".");
        parts[0] = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, " ");
        this.$input.val(parts.join("."));

但这不是解决问题的好方法。由于价值变化,我总是以最后的标记结束,所以它是例如无法使用箭头键向后导航或仅在输入的中间进行编辑。

我该如何解决这个问题?

【问题讨论】:

  • 请澄清问题。正在使用什么类型的输入框(文本/数字)?空格分隔符如何确定(每3个数字/替换点/数字中间不管多大)?
  • 需要再澄清一点:输入框是否只接受数字?还是它也接受所有其他输入?就像用户输入:Hello world 123456 应该变成Hello world 123 456
  • @icecub 字段只接受数字(例如:1234567 -> 123 456 7)
  • 这是我想出的:jsfiddle.net/8xm2vjkr 添加了仅用于数字输入的可选过滤器。如果你不想要它,你可以删除它。
  • @WiktorStribiżew,它有效,但不适合我。因为我需要在按键事件中添加监听器

标签: javascript jquery regex events input


【解决方案1】:
const formatString =  (str)=>str.replace( /(\S{3})/g ,'$1  ' )

正则表达式将任意 3 个 ({3}) 非空格字符 (\S) 分组。 g 标志使正则表达式捕获所有匹配项(从左到右)。替换值是matchedgoup ($1 )+ 1spaceChar (' ')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-10
    • 2016-03-12
    • 1970-01-01
    • 2021-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-17
    相关资源
    最近更新 更多