Числа через запятую при вводе в Javascript - PullRequest
0 голосов
/ 02 июля 2018

В следующем процессе не возникает проблем при вводе номера 9999.

Однако, если введено как 9,999, результат равен NaN.

Как мне сделать редактирование? Мне нужно использовать комические номера.

Я беру процент от числа, введенного на входе, и печатаю его на входе ниже.

function yirmibes() {
  num1 = document.getElementById("firstNumber").value;
  document.getElementById("result").value = (num1 / 100) * 25;
}

function elli() {
  num1 = document.getElementById("firstNumber").value;
  document.getElementById("result").value = (num1 / 100) * 50;
}

function format(input) {
  var nStr = input.value + '';  
  nStr = nStr.replace(/\,/g, "");
  x = nStr.split('.');
  x1 = x[0];
  x2 = x.length > 1 ? '.' + x[1] : '';  
  var rgx = /(\d+)(\d{3})/;
  while (rgx.test(x1)) {
    x1 = x1.replace(rgx, '$1' + ',' + '$2');
  }
  input.value = x1 + x2;
}
Number: <input type="text" id="firstNumber" onkeyup="format(this)" />
<br/><br/>
<input type="button" onClick="yirmibes()" Value="25%" />
<input type="button" onClick="elli()" Value="50%" />
<br/><br /> The Result is :
<input type="text" id="result" Value="" />

Ответы [ 3 ]

0 голосов
/ 02 июля 2018

Удалить запятую при вычислении результата:

function yirmibes()
{
  num1 = document.getElementById("firstNumber").value.replace(',', '');
  document.getElementById("result").value = (num1 / 100) * 25;
}
function elli()
{
  num1 = document.getElementById("firstNumber").value.replace(',', '');
  document.getElementById("result").value = (num1 / 100) * 50;
}
0 голосов
/ 02 июля 2018

Числа, разделенные запятыми - это String, а не Number в Javascript.

То есть вы не можете сосчитать String с Number, поэтому вы получили NaN.

Есть много способов достичь того, что вы хотите, но важно то, что не используйте строку для подсчета числа.

На мой взгляд, вы можете использовать replace() для удаления запятой из введенного значения, а затем использовать parseInt() для получения правильного числа. Как это:

var num1 = document.getElementById("firstNumber").value;
num1 = parseFloat(num1);
0 голосов
/ 02 июля 2018

Вам нужно проанализировать входное значение как число с плавающей запятой, если вы хотите принять значения запятых, в противном случае это будет текст, и вы не сможете вычислить с помощью текстовых значений:)

Если числа будут только полными числами и вы хотите удалить тысячу разделителей, то parseInt должен выполнить эту работу, в противном случае вы можете заменить все нечисловые символы или лучше использовать input type="number", чтобы разрешить ввод только число

parseFloat см .: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/parseFloat

номер типа ввода см .: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/number

...