2009-06-08 18 views
0

我想有這樣的功能:通ASP的控制作爲參數傳遞給JavaScript的

function count(inputObj, ouputObj) 
{ 
    outputObj.value = inputObj.value.length; 
} 

而且我想它調用這個方法:

<asp:TextBox ID="txtUSERGUID" runat="server" onkeyup="count(this, document.getElementById('<%=txtUSERGUIDLength.ClientID%>'));" onkeydown="count(this, document.getElementById('<%=txtUSERGUIDLength.ClientID%>'));" /> 

<asp:TextBox ID="txtUSERGUIDLength" runat="server" /> 

<asp:Label ID="lblUSERGUIDLength" runat="server" Text="chars" /> 

但我不斷收到一個JavaScript錯誤說:'outputObj'是未定義的。我可以像這樣調用這個函數嗎?還是我要完全錯誤的方向?

回答

4

你不能有這樣的服務器標籤內不會執行服務器端代碼:如果你要做到這一點像做

<script language='javascript'> 

var g_clientID = '<%=txtUSERGUIDLength.ClientID%>' 

<script/> 

然後

<%=txtUSERGUIDLength.ClientID%> 

做:

onclick(this, document.getElementById(g_clientID)) 
1

檢查你的頁面源代碼,我想你會發現「onkeyup」事件處理程序仍然有服務器s ide代碼。由於您要在服務器控件上設置屬性,因此不會執行「<%=%>」代碼。如果你想這樣做,你必須把它移到一個單獨的javascript函數中。

0

我不相信你可以用這種方式爲服務器端控件插入參數。

你可以在你的服務器端代碼中設置這些參數:

txtUSERGUID.Attributes.Add("onkeyup", yourEventHandlerScript); 
相關問題