简体   繁体   English

ASP.NET Web表单中的Javascript“未定义错误”

[英]Javascript 'undefined error' in asp.net webform

I'm not a javascript expert, but I've used it before, and this problem is perplexing me. 我不是javascript专家,但是我以前使用过它,这个问题使我感到困惑。 Here's the 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;
     }
  }

In the code behind, I set the attribute for this text box's OnBlur event: 在后面的代码中,我设置了此文本框的OnBlur事件的属性:

this.txtMyNumber.Attributes.Add("onblur", "formatNumThousands(this.value);");

I build and publish the app and it runs fine on my machine. 我构建并发布了该应用程序,它在我的机器上运行良好。 Two other users get 'undefined' in the text box, regardless of what they do. 不管他们做什么,其他两个用户在文本框中都会得到“未定义”。

Try this trimmed version ( see in jsfiddle ). 试试这个修整的版本( 请参阅jsfiddle )。 See that I replaced the [] operator for the charAt() method, as it's a more conservative approach for extracting individual characters from a string: 看到我用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;
}

Don't forget to change the code behind to 不要忘记将后面的代码更改为

// Notice that `.value´ is gone:
this.txtMyNumber.Attributes.Add("onblur", "formatNumThousands(this)");

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

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