我不是javascript专家,但我之前使用过它,这个问题令我困惑。这是javascript:
function formatNumThousands(myNumber) {
if (myNumber.length > 0) {
var index = myNumber.indexOf(',');
while (index != -1) {
myNumber = myNumber.replace(',', '');
index = myNumber.indexOf(',');
}
var myResult = '';
for (var i = myNumber.length - 1; i >= 0; i--) {
myResult = myNumber[i] + myResult;
if ((myNumber.length - i) % 3 == 0 & i > 0) myResult = ',' + myResult;
}
document.getElementById('<%=txtMyNumber.ClientID%>').value = myResult;
}
}
在后面的代码中,我为此文本框的OnBlur事件设置了属性:
this.txtMyNumber.Attributes.Add("onblur", "formatNumThousands(this.value);");
我构建并发布应用程序,它在我的机器上运行良好。另外两个用户在文本框中“未定义”,无论他们做什么。
答案 0 :(得分:0)
尝试这个修剪版本(see in jsfiddle)。看到我替换了[]
方法的charAt()
运算符,因为它是一种从字符串中提取单个字符的更保守的方法:
function formatNumThousands(editElement) {
if (!editElement || editElement.value.length == 0)
return;
var myNumber = editElement.value.replace(/,/g, '');
var myResult = '';
for (var i = myNumber.length - 1; i >= 0; i--) {
myResult = myNumber.charAt(i) + myResult;
if ((myNumber.length - i) % 3 == 0 & i > 0)
myResult = ',' + myResult;
}
editElement.value = myResult;
}
不要忘记将后面的代码更改为
// Notice that `.value´ is gone:
this.txtMyNumber.Attributes.Add("onblur", "formatNumThousands(this)");