当我尝试在动态加载的用户控件中调用 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() 函数在页面开头定义。如果您需要更多信息,请告诉我。
谢谢, 拉坦
最佳答案
嘿这个链接可能有帮助。这是一个非常相似的问题
<小时/>已编辑
问题是您的 ajax 调用没有注册您的脚本标记。如果您将脚本放在主页上而不是 ascx 上,那么这将起作用。或者您可以从ajax响应中获取脚本标签,然后将其注册到dom。
关于javascript - 如何在动态加载的用户控件上创建和调用 JavaScript 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2908586/