Логическая ошибка в проверке чисел вместе с символом процента в React Js

Jane Fred спросил: 03 ноября 2018 в 09:14 в: javascript

В моем проекте есть поле с именем Rate, которое может принимать следующие значения: Например:

  • 2,32
  • 2,32%

Условия:

  • Разрешены только цифры.
  • Только две цифры после десятичной точки.
  • Запрещается использование букв и других символов.

Это фрагмент кода, который я использую

handleCheck = (e)=> {
    let onlyNums = e.target.value.replace(/[^0-9\.,%]/g, ''); 
    var str = '';
    var isperc = false;    
    if(onlyNums.indexOf('.') !== -1)
    {     
      var arr = onlyNums.split(".");
      if(arr[1].length >2)
      {
        if( arr[1].indexOf('%') !== -1)
          isperc = true;
        arr[1] = arr[1].slice(0, 2);
      }
      if(isperc)
        e.target.value = arr[0] + '.' + arr[1] + '%';
      else
        e.target.value = arr[0] + '.' + arr[1];
    }
    if(onlyNums.indexOf('%') !== -1)
    {
      str = onlyNums.indexOf('%');
      var start = (str + 1);     
      onlyNums = e.target.value.slice(0, start);
      e.target.value=onlyNums;
    }  }

На изображении выше показана проблема. Поле Rate также принимает буквы, прежде чем ставить десятичную точку.

как мне изменить мой код, чтобы избежать этой проблемы? Или как мне преобразовать регулярное выражение \d+(\.\d\d)?%?, подобное тому, которое я использовал внутри функции replace в вопросе, потому что это регулярное выражение не работает с моим кодом

0 ответов