【问题标题】:javascript inside Usercontrol inside updatepanel is undefined更新面板内的用户控件中的 javascript 未定义
【发布时间】:2013-07-25 16:40:34
【问题描述】:

我在这里遇到了一个小问题:

我有一个 aspx 页面,其中包含一个更新面板,该面板有一个占位符(在其内容模板中),其中包含根据特定条件显示/隐藏的不同用户控件。

其中一个有一个很长的脚本,里面有一个初始化函数,该函数具有使用服务器标签 () 检索的控件以获取值等。问题是,当我调用这个函数一次updatepanel 完成更新,它只是说它未定义..

好像我的 userControl 脚本根本没有被看到,

这是我的 aspx 页面,更新完成后调用“initializeFees”函数:

 <asp:ScriptManager ID="ScriptManager1" runat="server" EnablePartialRendering="true"
            EnablePageMethods="true">
<asp:UpdatePanel runat="server">
        <ContentTemplate>
            <script type="text/javascript">     
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(initializeFees);

            </script>
        <div class="Registration_ProgressContent">
            <uc3:Ctrl_RegistrationProgress ID="Ctrl_RegistrationProgress1" runat="server" OnSelectedIndexChanged="changeStep" />
        </div>
    </div>
    <div class="Registration_StepContent">
        <asp:PlaceHolder runat="server">
            <uc1:Ctrl_RegistrationGeneral ID="Ctrl_RegistrationGeneral1" runat="server" Visible="False" />
            <uc4:Ctrl_RegistrationFee ID="Ctrl_RegistrationFee1" runat="server" Visible="False" />

这是我的“uc4:Ctrl_RegistrationFee”html 代码:

<%@ Control Language="vb" AutoEventWireup="false" CodeBehind="Ctrl_RegistrationFee.ascx.vb"
    Inherits="MDSInscription.Ctrl_RegistrationFee" %>
<script type="text/javascript">

    //Validateurs
    var valTeam;
    var valEmail;
    var imgName;

    function initializeFees() {
        valTeam = $('#valCreateTeamName');
        valEmail = $('#valCreateEmail');

        $("#accordion").accordion({
        //activate: function (event, ui) {
        //    //                validateSelection();
        //}
    });

后面有代码(VB.NET .....#joy..):

Private Sub Page_PreRender(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.PreRender

    ScriptManager.RegisterClientScriptBlock(Me, Page.GetType(), "Init", "initializeFees();", True)

End Sub

这是我搜索了一个多小时后得到的代码, 我收到以下错误:

Uncaught ReferenceError: initializeFees is not defined 

如果您觉得可以提供帮助,谢谢!

【问题讨论】:

  • 我遇到了几乎同样的问题。你有没有以任何方式解决它?我的猜测是 AJAX 导致了这个问题,因为我之前在其他页面上没有这个问题。
  • 是的,问题解决了!在更新面板之外使用 pageLoad 函数;每次更新面板刷新时都会触发它
  • 好的,谢谢,但这并不是我真正需要的。不过它可能对其他人有所帮助:)

标签: asp.net vb.net user-controls updatepanel scriptmanager


【解决方案1】:

使用以下脚本解决了问题,我把它放在了更新面板之外:

    function pageLoad() {
        $(".datepicker").datepicker({
            changeMonth: true,
            changeYear: true,
            minDate: "-100Y",
            maxDate: "-15Y",
            dateFormat: "dd/mm/yy",
            yearRange: "1913:2300"
        });
        //more Code executed on each postback from the update panel ...
        }

【讨论】:

    猜你喜欢
    • 2018-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多