簡體   English   中英

ASP.NET Web表單中的Javascript“未定義錯誤”

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

我不是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);");

我構建並發布了該應用程序,它在我的機器上運行良好。 不管他們做什么,其他兩個用戶在文本框中都會得到“未定義”。

試試這個修整的版本( 請參閱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)");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM