Javascript 在数字之间添加空格

Javascript 在数字之间添加空格,javascript,html,textbox,numbers,space,Javascript,Html,Textbox,Numbers,Space,我想输入一个数字。我的文本框通过以下代码只接受数字: function isNumber(evt) { evt = (evt) ? evt : window.event; var charCode = (evt.which) ? evt.which : evt.keyCode; if (charCode > 31 && (charCode < 48 || charCode > 57)) { return false;

我想输入一个数字。我的文本框通过以下代码只接受数字:

function isNumber(evt) {
    evt = (evt) ? evt : window.event;
    var charCode = (evt.which) ? evt.which : evt.keyCode;
    if (charCode > 31 && (charCode < 48 || charCode > 57)) {
        return false;
    }
    return true;
}
等等

我试着从右边读取每3个字符的输入,并添加一个空格。但我的方法效率很低,当我将文本框中的值从1000更改为1000时,它会出于某种原因选择它,然后按任意键,将整个内容删除

如果您知道如何做到这一点,请不要使用jQuery之类的javascript插件。谢谢。

对于整数的使用

function numberWithSpaces(x) {
    return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, " ");
}
对于浮点数,可以使用

function numberWithSpaces(x) {
    var parts = x.toString().split(".");
    parts[0] = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, " ");
    return parts.join(".");
}
这是一个简单的正则表达式 最简单的方法:

1. 2. 3. 4. 如果希望使用“,”而不是“”:

var num = 1234567.890123,
result = Number(num.toFixed(0)).toLocaleString().split(/\s/).join(',') + '.' + Number(num.toString().slice(num.toString().indexOf('.')+1)).toLocaleString()
//will equal to 1,234,567.890 123
如果不起作用,请设置如下参数:“ToLocalString('ru-ru')”
参数“en-en”将用“,”而不是“,”来分割数字。

警告一句:这很难做到正确。如果我在输入中间用鼠标点击并添加一个数字怎么办?我将光标移动到某个位置并点击粘贴是什么?它与撤消和重做的配合效果如何?处理键盘输入不仅仅是接受正确的字符序列,还有很多事情要做。很好的解决方案!第一个示例仅在您位于同一区域时提供空格。”“en US”将显示逗号,这还取决于浏览器和用户设置。这不是一个万无一失的解决方案。伟大的解决方案!只需将3替换为4即可使用中文数字格式。
var num = 1234567890,
result = num.toLocaleString() ;// result will equal to "1 234 567 890"
var num = 1234567.890,
result = num.toLocaleString() + num.toString().slice(num.toString().indexOf('.')) // will equal to 1 234 567.890
var num = 1234567.890123,
result = Number(num.toFixed(0)).toLocaleString() + '.' + Number(num.toString().slice(num.toString().indexOf('.')+1)).toLocaleString()
//will equal to 1 234 567.890 123
var num = 1234567.890123,
result = Number(num.toFixed(0)).toLocaleString().split(/\s/).join(',') + '.' + Number(num.toString().slice(num.toString().indexOf('.')+1)).toLocaleString()
//will equal to 1,234,567.890 123