Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/440.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 三对三分开?_Javascript_Jquery - Fatal编程技术网

Javascript 三对三分开?

Javascript 三对三分开?,javascript,jquery,Javascript,Jquery,当在输入:文本中键入数字时,如何将它们三到三分开,并在它们之间输入:,? 正常数字格式设置 示例:在输入中键入此数字:45656839 现场结果-在线输入相同:45656839 我不想使用插件。 恕我直言,我认为屏蔽输入插件可能是一个很好的解决方案。您可以在这里阅读更多内容:我认为屏蔽输入插件可能是一个很好的解决方案。您可以在此处阅读更多内容: 发件人: From:只需做一些未经测试的事情,就可以了: $(':text').blur(function(){ var $this = $(thi

当在输入:文本中键入数字时,如何将它们三到三分开,并在它们之间输入:,? 正常数字格式设置 示例:在输入中键入此数字:45656839 现场结果-在线输入相同:45656839 我不想使用插件。


恕我直言,我认为屏蔽输入插件可能是一个很好的解决方案。您可以在这里阅读更多内容:

我认为屏蔽输入插件可能是一个很好的解决方案。您可以在此处阅读更多内容:

发件人:


From:

只需做一些未经测试的事情,就可以了:

$(':text').blur(function(){
  var $this = $(this), val = $this.val(), newVal = ''
  for (var i = 0; i < val.length; i++) {
    newVal += val.charAt(i)
    if (!((i + 1) % 3))
      newVal += ','
  }
  $this.val(newVal.slice(0,-1))
})

编辑:见上面约瑟夫的答案。他的头发比较短。

只需做一些未经测试的事情,就可以了:

$(':text').blur(function(){
  var $this = $(this), val = $this.val(), newVal = ''
  for (var i = 0; i < val.length; i++) {
    newVal += val.charAt(i)
    if (!((i + 1) % 3))
      newVal += ','
  }
  $this.val(newVal.slice(0,-1))
})
编辑:见上面约瑟夫的答案。他的头发比较短

这应该对你有用

<input type="text" class="numeric" />
编辑 对于普通的数字格式,代码有点不同。可能有一个很好的正则表达式用于此,但我的第一个想法是反转字符串并应用相同的技术。然后你再次反转字符串,就得到了它

$("input:text.numeric").keyup(function(){
    $val = $(this).val().match(/[0-9]/g).reverse().join("").match(/[0-9]{1,3}/g).join(",").match(/./g).reverse().join("");
    $(this).val($val)
});
编辑2 作为将来的参考,如果有人想用小数位来实现这个,是的,我被迷住了:p

$("input:text.numeric").keyup(function(e){
    if(e.which > 40 || e.which == 8) {
        var num = $(this).val().match(/[0-9,]*/g)[0];
        var decimalNum = $(this).val().match(/[.][0-9]*/) || "";
        if(num) {
            var wholeNum = num.match(/[0-9]/g).reverse().join("").match(/[0-9]{1,3}/g).join(",").match(/./g).reverse().join("");
            var resultNum = wholeNum + decimalNum;
            $(this).val(resultNum);
        }
        else
        {
            $(this).val(num);
        }
    }
});
这应该对你有用

<input type="text" class="numeric" />
编辑 对于普通的数字格式,代码有点不同。可能有一个很好的正则表达式用于此,但我的第一个想法是反转字符串并应用相同的技术。然后你再次反转字符串,就得到了它

$("input:text.numeric").keyup(function(){
    $val = $(this).val().match(/[0-9]/g).reverse().join("").match(/[0-9]{1,3}/g).join(",").match(/./g).reverse().join("");
    $(this).val($val)
});
编辑2 作为将来的参考,如果有人想用小数位来实现这个,是的,我被迷住了:p

$("input:text.numeric").keyup(function(e){
    if(e.which > 40 || e.which == 8) {
        var num = $(this).val().match(/[0-9,]*/g)[0];
        var decimalNum = $(this).val().match(/[.][0-9]*/) || "";
        if(num) {
            var wholeNum = num.match(/[0-9]/g).reverse().join("").match(/[0-9]{1,3}/g).join(",").match(/./g).reverse().join("");
            var resultNum = wholeNum + decimalNum;
            $(this).val(resultNum);
        }
        else
        {
            $(this).val(num);
        }
    }
});


所以你想重新发明轮子;我强烈推荐使用插件,而不是自己发明。我强烈推荐使用jQuery而不是插件。。。你对它有更多的控制,在这种情况下,它非常容易。谁伤害了你,最好不要使用它。插件的大小更多的是由你自己编写代码。简单地说,插件并不总是解决方案。有时候从头开始写会更好,特别是如果它不是很复杂的话。好处包括更容易定制,代码更精简,等等,所以你想重新发明轮子;我强烈推荐使用插件,而不是自己发明。我强烈推荐使用jQuery而不是插件。。。你对它有更多的控制,在这种情况下,它非常容易。谁伤害了你,最好不要使用它。插件的大小更多的是由你自己编写代码。简单地说,插件并不总是解决方案。有时候从头开始写会更好,特别是如果它不是很复杂的话。好处包括更易于定制、代码更精简等。例如,问题中的示例,输出的是4565683985,而OP不希望这样。反转,然后调用,然后反转:P对不起,你完全正确,我的错。问题中的示例,输出的是4565683985,而OP不希望这样。反转,然后调用,然后反过来说:P对不起,你完全正确,我的错。你可以用keyup事件让它活起来。是的,那会管用的。但是我更喜欢你的——它短得多。@Abraham——谢谢。对于这个:45165874或4521243怎么样?正常的数字格式您可以使用keyup事件使其生效。是的,这会起作用。但是我更喜欢你的——它短得多。@Abraham——谢谢。对于这个:45165874或4521243怎么样?正常数字formatting@Joseph-谢谢。对于这个:45165874或4521243怎么样?正常数字formatting@NayantharaJudila啊!!普通数字格式。。。这是不同的,但并非不可能。我将发布一个修订版。@Joseph-谢谢。对于这个:45165874或4521243怎么样?正常数字formatting@NayantharaJudila啊!!普通数字格式。。。这是不同的,但并非不可能。我将发布一个修订版。告诉我们你试图做什么。告诉我们你试图做什么。