我需要一些帮助来解决此问题,我正在尝试在键入时从value标记中打印出<input>,它应该以千位分隔符打印出来,但是它返回的数字与我输入的一样,更确切地说,它不会工作。我该如何解决...?



function cDes(e) {
  var k = e.currentTarget;
  var prc = k.value; //example value: 123456789
  var prc_f = prc.toLocaleString('de-DE');
  var oDiv = document.getElementById('cOut');
  if (e.keyCode == 13) {
    if (prc.length < 1) {
      oDiv.innerHTML = 'FREE';
    } else {
      oDiv.innerHTML = prc_f; //expected output value: 123.456.789
    }
  } else {
    oDiv.innerHTML = '...';
  }
}

<input type='number' id='price' onKeyUp='cDes(event)'>

<div id='cOut'></div>

最佳答案

使用Number.toLocaleString()之前,将输入字符串转换为Number:

var prc_f = Number(prc).toLocaleString('de-DE');


例:



// get a reference to the element once
var oDiv = document.getElementById('cOut');

function cDes(e) {
  var prc = e.target.value; //example value: 123456789
  if (e.keyCode == 13) {
    if (prc.length < 1) {
      oDiv.innerHTML = 'FREE';
    } else {
      // you only need to convert the input when you display it
      oDiv.innerHTML = Number(prc).toLocaleString('de-DE'); //expected output value: 123.456.789
    }
  } else {
    oDiv.innerHTML = '...';
  }
}

<input type='number' id='price' onKeyUp='cDes(event)'>

<div id='cOut'></div>

关于javascript - Javascript toLocaleString onKeyUp事件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49973395/

10-12 12:20