Подтвердить что ты не робот

Добавить запятые для числа в поле ввода при наборе текста

Это делается неправильно: Может ли jQuery добавлять запятые, когда пользователь вводит цифры?

  $('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".

Пожалуйста, помогите. Спасибо.

4b9b3361

Ответ 1

если вы хотите иметь что-то вроде "1 000 000", вы можете изменить код на что-то вроде этого.

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

Надеюсь, что это поможет

Ответ 2

$(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

Ответ 3

Вы можете использовать Digital Bush Masked Input Plugin для JQuery. В нем есть много вариантов настройки, включая пробелы, например:

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

Кажется, что он был протестирован на разных платформах браузера, поэтому он может спасти вас от некоторых тестов совместимости.

Если вам нужна более полная поддержка числовой маски, вы можете использовать отличный autoNumeric с сайта decorplanit.com. Их веб-страница полна примеров.

Ответ 4

Я пробовал autoNumeric, как подсказал ответ @Zero-Distraction, но у меня были некоторые проблемы с вырезанием/вставкой в него. Библиотека CleaveJS имеет гораздо большую популярность, немного больше встроенной функциональности, и у меня не было таких проблем с ней. (демонстрационный сайт по адресу https://nosir.github.io/cleave.js/)

Ответ 5

Я попытался улучшить код j0k вместо использования размытия и фокуса, а не keyup: http://jsfiddle.net/AqDda/

^ Попробуйте ввести A (стандартный тип = "число" ) по сравнению с входом B (type = "text" с 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);
});