Как изменить функцию в Js с запятой на точку - PullRequest
1 голос
/ 23 января 2020

У меня есть функция в JS, которая отлично работает с запятыми. Мне нужно, чтобы он работал с точкой (ie. Число с точкой, а не запятая). Как я могу это изменить? Заменить в indexOf(',') на indexOf('.') мне не помогло.

$(".isInputNumber").on("keypress keyup blur", function(event) {
  var $this = $(this);
  if ((event.which != 44 || $this.val().indexOf(',') != -1) 
    && ((event.which < 48 || event.which > 57) 
    && (event.which != 0 && event.which != 8))) {
    event.preventDefault();
  }

  var text = $(this).val();
  if ((event.which == 44) && (text.indexOf(',') == -1)) {
    setTimeout(function() {
      if ($this.val().substring($this.val().indexOf(',')).length > 3) {
        $this.val($this.val().substring(0, $this.val().indexOf(',') + 3));
      }
    }, 1);
  }

  if ((text.indexOf(',') != -1) 
    && (text.substring(text.indexOf(',')).length > 2) 
    && (event.which != 0 && event.which != 8) 
    && ($(this)[0].selectionStart >= text.length - 2)) {
    event.preventDefault();
  }
});

Ответы [ 2 ]

1 голос
/ 23 января 2020

Свойство event.which указывает заданную кнопку или кнопку c, которые были нажаты (код 44 представляет запятую). Вы должны изменить это значение на точечный код (т.е. 46) в соответствии с ASCII

0 голосов
/ 23 января 2020

Используйте метод search, потому что он принимает регулярное выражение в качестве аргумента. И он найдет первую точку / запятую.

В вашем случае это будет похоже на search(/\.|,/). Вы можете просто заменить indexOf вызовы, потому что search также возвращает индекс первого совпадения.

Например:

"123,123".search(/\.|,/) // return 3
"123.123".search(/\.|,/) // return 3 also
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...