将asp控件作为参数传递给javascript

时间:2009-06-08 18:46:40

标签: 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'未定义。我可以这样调用这个函数,还是我走错了方向?

3 个答案:

答案 0 :(得分:4)

您不能在服务器标签内部执行服务器端代码:

<%=txtUSERGUIDLength.ClientID%>

如果您打算这样做,请执行

之类的操作
<script language='javascript'>

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

<script/>

然后做:

onclick(this, document.getElementById(g_clientID))

答案 1 :(得分:1)

检查你的页面源代码,我想你会发现“onkeyup”事件处理程序仍然有服务器端代码。由于您要在服务器控件上设置属性,因此“&lt;%=%&gt;”代码未执行。如果你想这样做,你必须将它移动到一个单独的javascript函数。

答案 2 :(得分:0)

我认为您不能以这种方式为服务器端控件插入参数。

您可以在服务器端代码中设置这些参数:

txtUSERGUID.Attributes.Add("onkeyup", yourEventHandlerScript);