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

时间:2010-05-25 21:15:56

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

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


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

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 个答案:

答案 0 :(得分:1)

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

Jquery and Ajax Post issue


<强> EDITED

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