2011-11-03 103 views
1

我正在使用ASP.NET 2.0。無法將ASP服務器控制值傳遞給javascript函數

我有我的入口表單上的各種ASP.NET服務器控件像TextBoxes。我想在onBlur事件上傳遞TextBox值。樣品文本框代碼如下:

<asp:TextBox ID="txtTotalTw" Width="80px" runat="server" MaxLength="10" onBlur="isNumber(this.Value);"></asp:TextBox> 

在代碼隱藏我添加以下線:

txtTotalTw.Attributes.Add("onBlur", "javascript:isNumber(this.Value)"); 

的JavaScript是以下:

<script type="text/javascript" language="javascript"> 
function isNumber(n) { 
    alert(n); 
    return !isNaN(parseFloat(n)) && isFinite(n); 
} 
</script> 

我添加alert(n),以檢查是否價值是否通過。該值不會從onBlur事件中傳遞。警報消息顯示「未定義」。

如何擺脫這個問題?

回答

1

從您的aspx模板文件中刪除onBlur。只留下一個你從代碼隱藏中添加的代碼。它會工作。

+0

感謝。更需要的一點幫助是我想將焦點設置到檢測到非數字條目的TextBox。 – RKh

1

刪除的onblur:

<asp:TextBox ID="txtTotalTw" Width="80px" runat="server" MaxLength="10" ></asp:TextBox> 

JavaScript是不需要前綴:

txtTotalTw.Attributes.Add("onBlur", "isNumber(this.value);"); 
1

正如Senad說,刪除標記和變化的額外調用,

這.Value this.value。

JavaScript區分大小寫,值未定義,但值爲。


將焦點設置回控制 更改代碼後面

txtTotalTw.Attributes.Add("onBlur", "javascript:isNumber(this)") 

,改變功能,這樣的事情

function isNumber(ctrl) { 
    var t = ctrl.value; 
    var n = parseFloat(t);  
    if (isNaN(n) || !isFinite(n)) { 
    ctrl.focus(); 
    } 
+0

這很好,但不幸的是,由於另一個VS-2005問題,它不能保證工作。看到我的另一個問題在這裏:http://stackoverflow.com/questions/7752496/why-server-controls-are-underlined-when-placed-inside-content-tags – RKh

+0

不知道這是如何相關。 。 。你提到網站運行,但你在IDE中有問題 – ZedWonk

相關問題