代码之家  ›  专栏  ›  技术社区  ›  Ratan

如何在动态加载的用户控件上创建和调用javascript函数?

  •  1
  • Ratan  · 技术社区  · 15 年前

    当我试图在动态加载的用户控件中调用javascript函数时,它找不到指定的函数。我有OrganizationDetails.ascx的用户控件。在这里,我使用modal popup扩展程序从用户那里获取一些信息,然后通过google验证地址并建议正确的格式。我试图用Java脚本来调用一个文本框的OnBurr函数,但是Mozilla Fibug说这个函数没有被定义,情况并非如此。如果有人能在这里帮我,那就太好了。


    编辑: javascript位于ascx页面的开头,用户控件使用基类加载,以显示组织详细信息并进行编辑。

    ascx页面在面板中有以下标签,由模式弹出窗口调用。

                    <padrap:DropDownList    ID                  ="ddlStateID"
                                            onChange            ="setContextKey2()"
                                            runat               ="server" />
    
                                <br />                  
                    <padrap:Label           ID                  ="lCity"
                                            Text                ="City: "
                                            AssociatedControlID ="tbrCity" 
                                            runat               ="server" 
                                            CssClass            ="col2"/>                       
    
    
                    <asp:TextBox            ID                  ="tbrCity"
                                            onBlur              ="setContextKey2()"
                                            runat               ="server" />                        
    
    
                  <br />
    
    <script type="text/javascript">
        alert('i hate javascript');
    
         var dependentBehaviors = [
                'tbCity_ace_b'
            ];
    
            var address = {};
        function setContextKey2(){
        //some javascript
                address.addressLine1 = $get('<%=tbrAddressID1.ClientID %>').value;
                address.addressLine2 = $get('<%=tbrAddressID1.ClientID %>').value;
                address.addressLine3 = $get('<%=tbrAddressID1.ClientID %>').value;
                address.countryISO2 = $get('<%=ddlCountryID.ClientID%>').value;
                address.stateCode = $get('<%=ddlStateID.ClientID%>').value;
                address.city = $get('<%=tbrCity.ClientID%>').value;
                address.postalCode = $get('<%=tbrPostalCode.ClientID%>').value; */
    
                var contextStr = Sys.Serialization.JavaScriptSerializer.serialize(address)
    
                var behavior = $find('tbCity_ace_b')
                behavior.set_contextKey(contextStr);
    
                var behavior2 = $find('tbPostalCode_ace_b')
                behavior2.set_contextKey(contextStr);
        }
     </script>
    

    setContextKey2()的函数在页面的开头定义。如果你需要更多的信息,请告诉我。

    谢谢, 拉坦

    1 回复  |  直到 15 年前
        1
  •  1
  •   Community CDub    8 年前

    嘿,这个链接可能有帮助。这是一个非常模拟的问题

    Jquery and Ajax Post issue


    编辑

    问题是Ajax调用没有注册脚本标记。如果您将脚本放在主页而不是ascx上,那么这将起作用。或者,您可以从Ajax响应中获取脚本标记,然后将其注册到DOM中。