ASP.net用户控件不调用javascript函数

时间:2011-07-01 10:24:00

标签: c# javascript asp.net

我正在开发asp.net web应用程序,我有一个调用注册用户控件的转发器,我在用户控件中有一个按钮,我想调用一个javascript函数,使Ajax调用在服务器上执行某些操作。这个按钮没有调用javascript方法,我不知道为什么?当我查看源代码时,发现转发器中的每个项目都重复了javascript函数,如何消除这种重复,特别是我读取函数内部的服务器项目,以及为什么函数没有被调用?

非常感谢!

sercontrol.ascx 

<div id="divBtnEvent" runat="server"> 
   <input type="button" id="btnAddEvent" class="ok-green" onclick="saveEvent();" /> 
</div> 

<script type="text/javascript"> 
    function saveEvent() 
    { 
           var eventText = document.getElementById('<%=txtEventDescription.ClientID%>').value; 
           // make ajax call 
     } 

3 个答案:

答案 0 :(得分:1)

问题1:在视图源中,我发现转发器中的每个项目都重复了javascript函数。

解决方案: 将js函数放在要调用用户控件的页面上。您还必须在页面上放置js文件引用而不是用户控件。

问题2:您正在尝试将控件的值设为&lt;%= txtEventDescription.ClientID%&gt;。 我认为,这种控制是用户控制的。

解决方案:请检查您的页面源代码,看看控件的实际clientid是什么。

如果在调用js函数时仍有问题,请检查firefox的错误控制。

希望得到这个帮助。

答案 1 :(得分:0)

OP说and when I view source I found the javascript function is repeated for every item in the repeater

摆脱它把你的javascript如下

<head runat="server">
//heres goes ur js
</head>

我猜这是你的问题

答案 2 :(得分:0)

将saveEvent函数定义从用户控件替换为使用控件的页面。根据我的理解,您可以使用该页面中的此功能文本框ID。 实际上,如果你在用户控件的标记中放置了javascript块,它将与其余控件的标记一起呈现。为避免这种情况,您可以从服务器代码注册javascript,并检查代码块是否已注册。 顺便说一句,就像它一样 - 只有最后一个函数定义被引起注意,因为每次新的控件实例渲染时它都重新定义了前一个函数定义。