【问题标题】:How can I create and call a javascript function on a dynamically loaded user control?如何在动态加载的用户控件上创建和调用 javascript 函数?
【发布时间】:2010-05-25 21:15:55
【问题描述】:

当我尝试在动态加载的用户控件中调用 javascript 函数时,它找不到指定的函数。我有一个针对 organizationDetails.ascx 的用户控件。在那里,我使用模态弹出扩展器从用户那里获取一些信息,然后我通过谷歌验证地址并建议正确的格式。我正在尝试将 java 脚本用于调用文本框的 onBlur 的函数,但 mozilla firebug 说该函数未定义,事实并非如此。如果有人可以在这里帮助我,那就太好了。


已编辑: 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() 的函数在页面开头定义。如果您需要更多信息,请告诉我。

谢谢, 拉坦

【问题讨论】:

  • 也许你可以提供一些源代码?!你在哪里注册 javascript,在代码隐藏或 aspx/ascx 上?用户控件是否可见并已加载?
  • 我已经发布了相关代码。如果您需要更多,请告诉我。谢谢。

标签: javascript asp.net-ajax user-controls modalpopupextender


【解决方案1】:

嘿,这个链接可能会有所帮助。这是一个非常相似的问题

Jquery and Ajax Post issue


已编辑

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

【讨论】:

  • 这不是我想要的。如果你看一下我附上的代码。控件上的任何 javascript 都没有加载。它是 ajax 中的错误吗?
  • 我之前尝试了第一种方法,但没有成功,我该如何使用后者?我是 ajax 新手。谢谢,Ratan
猜你喜欢
  • 2010-11-14
  • 1970-01-01
  • 1970-01-01
  • 2010-12-18
  • 1970-01-01
  • 1970-01-01
  • 2019-08-17
  • 2017-04-10
  • 2015-07-27
相关资源
最近更新 更多