当父页面提交到服务器时,如何调用UserControl javascript?
net usercontrol位于我的aspx页面上。在usercontrol中有一个javascript函数,每当包含usercontrol的页面提交到服务器时,我都会激活该函数。理想情况下,在这种情况发生之前,我不希望在父级中编写任何代码来实现这一点,但我不确定usercontrol此时能够实现什么功能。usercontrol能否知道页面正在提交给服务器,并在此之前启动该函数?这里有什么事情发生吗 这可能吗?我的描述清楚吗当父页面提交到服务器时,如何调用UserControl javascript?,javascript,asp.net,user-controls,Javascript,Asp.net,User Controls,net usercontrol位于我的aspx页面上。在usercontrol中有一个javascript函数,每当包含usercontrol的页面提交到服务器时,我都会激活该函数。理想情况下,在这种情况发生之前,我不希望在父级中编写任何代码来实现这一点,但我不确定usercontrol此时能够实现什么功能。usercontrol能否知道页面正在提交给服务器,并在此之前启动该函数?这里有什么事情发生吗 这可能吗?我的描述清楚吗 谢谢 回发是一个服务器端事件。在客户端,页面正在重新加载。。。因此,
谢谢 回发是一个服务器端事件。在客户端,页面正在重新加载。。。因此,如果您真的想编写客户端脚本,无论是在页面中还是回发的用户控件中,我建议您发送一个隐藏的输入或其他内容,作为是否回发的指示器。比如: 标记:
<asp:HiddenField ID="postBackFlag" runat="server" Value="false" />
客户端:
$(document).ready(function() {
if ($('input[id$=_postBackFlag]').val() === 'true') {
//do stuff
}
});
您可以为表单的提交事件添加客户端事件处理程序。您可以在用户控件中调用Page_Load时生成javascript,并使用Page.ClientScript.RegisterStartupScript将其添加到页面中
string key = "submitscript";
System.Text.StringBuilder script = new System.Text.StringBuilder();
script.Append("function mySubmitHandler(e) { \n");
script.Append(" // TODO my javascript here \n");
script.Append(" alert('derp'); \n");
script.Append("} \n");
script.AppendFormat("var f = document.getElementById('{0}'); \n", Page.Form.ClientID);
script.Append("if(f.addEventListener){\n");
script.Append(" f.addEventListener('submit', mySubmitHandler, false); \n");
script.Append("} else { \n");
script.Append(" f.attachEvent('onsubmit', mySubmitHandler); \n");
script.Append("} \n");
Page.ClientScript.RegisterStartupScript(this.GetType(), key, script.ToString(), true);
对于类型和关键参数的每个组合,脚本只会添加一次,因此您可以在页面上有多个用户控件,并且此脚本只会添加一次。Ahh非常感谢您……我发现我的问题不正确……我希望在用户控件父控件提交到服务器时调用此函数。我将编辑我的问题。谢谢
string key = "submitscript";
System.Text.StringBuilder script = new System.Text.StringBuilder();
script.Append("function mySubmitHandler(e) { \n");
script.Append(" // TODO my javascript here \n");
script.Append(" alert('derp'); \n");
script.Append("} \n");
script.AppendFormat("var f = document.getElementById('{0}'); \n", Page.Form.ClientID);
script.Append("if(f.addEventListener){\n");
script.Append(" f.addEventListener('submit', mySubmitHandler, false); \n");
script.Append("} else { \n");
script.Append(" f.attachEvent('onsubmit', mySubmitHandler); \n");
script.Append("} \n");
Page.ClientScript.RegisterStartupScript(this.GetType(), key, script.ToString(), true);