键入时在输入字段中为数字添加逗号

时间:2012-02-06 06:31:51

标签: jquery

这不正确: Can jQuery add commas while user typing numbers?

  $('input.number').keypress(function(event){
      if(event.which >= 37 && event.which <= 40){
          event.preventDefault();
      }
      var $this = $(this);
      var num = $this.val().replace(/,/g, '');
      $this.val(num.replace(/(\d)(?=(\d{3})+(?!\d))/g, "$1,"));
  });

我需要“1000000”为“1,000,000”或更好,空格为“1 000 000”。

请帮忙。感谢。

5 个答案:

答案 0 :(得分:11)

如果你想拥有类似“1 000 000”的东西,你可以将代码更改为这样的代码。

  var num = $this.val().replace(/(\s)/g, '');
  $this.val(num.replace(/(\d)(?=(\d{3})+(?!\d))/g, "$1 "));

希望这有帮助

答案 1 :(得分:7)

$(document).ready(function(){


    $('input.number').keyup(function(event){
      // skip for arrow keys
      if(event.which >= 37 && event.which <= 40){
          event.preventDefault();
      }
      var $this = $(this);
      var num = $this.val().replace(/,/gi, "").split("").reverse().join("");

      var num2 = RemoveRougeChar(num.replace(/(.{3})/g,"$1,").split("").reverse().join(""));

      // the following line has been simplified. Revision history contains original.
      $this.val(num2);});});

    function RemoveRougeChar(convertString){


    if(convertString.substring(0,1) == ","){

        return convertString.substring(1, convertString.length)            

    }
    return convertString;

}

根据需要进行编辑 - 同样在jsfiddle - jsFiddle

答案 2 :(得分:6)

您可以使用Digital Bush的Masked Input Plugin for Jquery。它有许多自定义选项,包括空格,例如:

$("#myInputText").mask("9 999 999",{placeholder:" "})

它似乎已经在不同的浏览器平台上进行了测试,因此它可以帮助您避免一些兼容性测试。

如果您想要更全面的数字掩码支持,可以使用优秀的autoNumeric from decorplanit.com。他们的网页上有很多例子。

答案 3 :(得分:0)

我按照@ Zero-Distraction的回答建议尝试了autoNumeric,但是在剪切/粘贴时遇到了一些问题。 CleaveJS库的流行度更高,内置功能也更多,我没有遇到相同的问题。 (演示网站位于https://nosir.github.io/cleave.js/上)

答案 4 :(得分:-1)

我尝试使用模糊和焦点事件而不是键盘来改进j0k的代码: http://jsfiddle.net/AqDda/

^尝试输入A(标准类型=“数字”)与输入B(使用JavaScript的类型=“文本”和一些“无效”样式)。

$('input.number').on("focus",function(e){
    var $this = $(this);
    var num = $this.val().replace(/,/g,"");
    $this.val(num);

}).on("blur", function(e){
    var $this = $(this);
    var num = $this.val().replace(/[^0-9]+/g, '').replace(/,/gi, "").split("").reverse().join("");     
    var num2 = RemoveRougeChar(num.replace(/(.{3})/g,"$1,").split("").reverse().join(""));
    $this.val(num2);
});