【问题标题】:onkeyup javascript function does not work properly on input fieldonkeyup javascript函数在输入字段上无法正常工作
【发布时间】:2015-07-09 10:25:30
【问题描述】:

我有一个将整数转换为印度卢比格式的函数。它适用于 onclick 事件函数并给出结果,但是当它应用于 onkeyup 事件时它不起作用。问题出在哪里?

我的功能如下。

function numberWithCommas(x) {
    x = x.replace(",", '');
    x = x.toString();
    var lastThree = x.substring(x.length - 3);
    var otherNumbers = x.substring(0, x.length - 3);
    if (otherNumbers != '')
        lastThree = ',' + lastThree;
    var res = otherNumbers.replace(/\B(?=(\d{2})+(?!\d))/g, ",") + lastThree;
    return res;
}


function numberformat() {
    var n = document.getElementById('in_no').value;
    alert(numberWithCommas(n));
}

html是

<input type="text" id="in_no" />
<button onclick="numberformat()">Test</button>
<input type="text" id="in_no1" onkeyup="numberWithCommas(this.value)" />

如果我们创建另一个函数,例如

    function numberformat1(id){
    var n = document.getElementById(id).value;
    var n = numberWithCommas(n);
  document.getElementById('in_no1').value = n;

}

和 html 更改为

    <input type="text" id="in_no1" onkeyup="numberformat1('in_no1')"/>

它有效,但结果就像 2,0,0,0,0,000 而不是 2,00,00,000

【问题讨论】:

    标签: javascript forms events format onkeyup


    【解决方案1】:

    1) 将onkeyup="numberWithCommas(this.value)" 替换为onkeyup="numberWithCommas(this)"

    2) 因为我们现在是通过引用传递元素,所以这样做:

    function numberWithCommas(x) {
      var elem = x;
      var x = x.value.replace(/,/g, '');
      var lastThree = x.substring(x.length - 3);
      var otherNumbers = x.substring(0, x.length - 3);
      if (otherNumbers != '')
        lastThree = ',' + lastThree;
      var res = otherNumbers.replace(/\B(?=(\d{2})+(?!\d))/g, ",") + lastThree;
      elem.value = x;
    }
    No commas in here:
    <input type="text" id="in_no1" onkeyup="numberWithCommas(this)" />

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-28
      • 2019-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多