Как разрешить запятые с parseFloat? - PullRequest
0 голосов
/ 15 апреля 2020

Мне было интересно, есть ли обходной путь для разрешения запятых в полях ввода при использовании parseFloat. Теперь разрешены только точки, но я хочу, чтобы вместо них принимались запятые. Кто-нибудь знает, как это сделать?

Вот мой код:

const floatParser = parserFunc => (value) => {
  const nr = parseFloat(parserFunc(value));
  if (Number.isNaN(nr)) return undefined;
  return nr;
};

export const stripPercentageMaskedValue = value => value && value.trim()
  .replace(new RegExp(PERCENTAGE_SUFFIX, 'g'), '');

export const parsePercentage = floatParser(stripPercentageMaskedValue);

export const percentageMask = createNumberMask({
  allowNegative: true,
  allowDecimal: true,
  prefix: '',
  suffix: PERCENTAGE_SUFFIX,
});

Я попытался поместить decimalSymbol: ',', но это не работает так, как мне бы хотелось. На моей странице это выглядит хорошо, но когда я его утешаю, он показывает только число перед запятой. Если я напишу 5,6, мой console.log покажет только 5.

1 Ответ

1 голос
/ 15 апреля 2020

parseFloat работает только с десятичными знаками, но вы можете заменить запятые на десятичные точки во входящем номере:

let commafreeNumber = value.replace(/,/g, '.')

Если входящий номер уже содержит десятичные точки (например, 1,234,56), вы можете удалить их раньше смена запятых:

number.replace(/\./g, '').replace(/,/g, '.')
...