当我尝试在动态加载的用户控件中调用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()的函数在页面开头定义。如果您需要更多信息,请与我们联系。
谢谢, 拉坦
答案 0 :(得分:1)
嘿,这个链接可能有所帮助。这是一个非常类似的问题
<强> EDITED 强>
问题是您的ajax调用未注册脚本标记。如果您将脚本放在主页而不是ascx上,那么这将起作用。或者您可以从ajax响应中获取脚本标记,然后将其注册到dom。