添加点后每3个数字在所有的文本字段与JS

Add points after every 3 digits on all text fields with JS

本文关键字:文本 字段 JS 3个 数字 添加      更新时间:2023-09-26

基本上我想让JS检测数字和编辑任何输入的"text"块。

如果用户输入1000,脚本应该自动解析它并将其格式化为1.000。有什么具体的方法吗?

这可能有帮助http://www.mredkj.com/javascript/nfbasic.html

用于添加逗号,所以我将逗号更改为dot。

function addDots(nStr)
    {
        nStr += '';
        x = nStr.split('.');
        x1 = x[0];
        x2 = x.length > 1 ? '.' + x[1] : '';
        var rgx = /('d+)('d{3})/;
        while (rgx.test(x1)) {
            x1 = x1.replace(rgx, '$1' + '.' + '$2'); // changed comma to dot here
        }
        return x1 + x2;
    }

基本上你想在你的输入元素上使用onchange()事件并格式化输入字符串。

<script type="text/javascript">
    function addDecimalPoints(id) {
        var inputElement = document.getElementById(id);
        inputElement.value=inputElement.value.replace(/'D/g, '');
        var inputValue = inputElement.value.replace('.', '').split("").reverse().join(""); // reverse
        var newValue = '';
        for (var i = 0; i < inputValue.length; i++) {
            if (i % 3 == 0) {
                newValue += '.';
            }
            newValue += inputValue[i];
        }
        inputElement.value = newValue.split("").reverse().join("");
    }
</script>

我使用正则表达式,它为我工作:

function formatNumber(num) {
  return num.toString().replace(/('d)(?=('d{3})+(?!'d))/g, '$1.')
}

完整示例见:https://blog.abelotech.com/posts/number-currency-formatting-javascript/

我使用这个简单的正则表达式与向前看value.replace(/'d(?=(?:'d{3})+$)/g, '$&.');

我建议你不要这样做。

无论你怎么做,这将是不愉快的,因为点的位置将取决于有多少字符已经键入和有多少尚未到来 -当他们键入10时,你无法知道他们是否要输入另外两个数字。

无论如何要使用其他答案中显示的方法之一来更改字段,一旦用户完成编辑(即在onBlur中),但不要在编辑时 !

不如这样做

let decimalPoints = id => {
    let target = document.getElementById(id)
    target.value = target.value.toLocaleString('en')
}