ASP.net用户控件;t调用javascript函数

ASP.net user control doesn't call a javascript function

本文关键字:调用 javascript 函数 net 用户 控件 ASP      更新时间:2023-09-26

我正在开发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 
     } 

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

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

问题2:您正试图将控件的值设置为<%=txtEventDescription。客户端ID%>。我认为,这个控件在用户控件上。

解决方案:请检查您的页面源代码,看看控件的实际客户端ID是.

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

希望得到帮助。

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>

我想这就是你的问题

将saveEvent函数定义从用户控件替换到使用控件的页面上。一直以来,据我所知,你在这个函数中使用了该页面的文本框id。实际上,如果您在用户控件的标记中放置了javascript块,它将与rest控件的标记一起呈现。为了避免这种情况,您可以从服务器代码中注册javascript,并检查代码块是否已经注册。顺便说一句,事实上,每次呈现新的控件实例时,只有最后一个函数定义被重新定义时才被注意到。