【发布时间】: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