繁体   English   中英

onkeyup javascript函数在输入字段上无法正常工作

[英]onkeyup javascript function does not work properly on input field

我有一个将整数转换为印度卢比格式的函数。 它在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

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)" /> 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM