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

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

当我尝试在动态加载的用户控件中调用 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() 函数在页面开头定义。如果您需要更多信息,请告诉我。

谢谢, 拉坦

最佳答案

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

Jquery and Ajax Post issue

<小时/>

已编辑

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

关于javascript - 如何在动态加载的用户控件上创建和调用 JavaScript 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2908586/

相关文章:

c# - 导致 UserControl 删除自身 (WPF)

ASP.NET 用户控件类库

javascript - 在关闭或已经关闭的模式下保护 websocket

javascript - SVG 文本行高在 img 标签中显示不同

javascript - 防止点击标签触发子按钮

javascript - javascript中是否有indexOf可以使用自定义比较函数搜索数组

c# - 如何使用 asp.net web 表单从代码后面访问文本框、更新面板内的标签

c# - 如何从动态加载的 UserControl 中的事件触发 UpdatePanel?

asp.net-mvc - 当 ModelState 无效时调用 Ajax.BeginForm OnFailure

C# typed <T> usercontrol 在设计模式下给出错误