在 ASP.NET 应用程序中,我得到了自动生成的 javascript 事件,但我真的不想要。我有一个名为登录的按钮,因为这个自动生成的 JavaScript 事件我的客户端无法登录,这是自动生成的,我真的不知道为什么会发生这种情况
客户用户控件.ascx 文件中的 Asp.net 按钮
<asp:Button ID="cmdLogin" runat="server" Text="Login" CssClass="Footer_button"
CommandName="login" CausesValidation="True" />
正如您所看到的,按钮中根本没有事件,但是当我在任何浏览器中运行我的应用程序时,它都会呈现自动生成的事件
自动生成 JavaScript 事件
<input name="ctl00$header1$slidingpanel1$Login1$cmdLogin" value="Login" id="ctl00_header1_slidingpanel1_Login1_cmdLogin" class="Footer_button" type="submit"
onclick="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("ctl00$header1$slidingpanel1$Login1$cmdLogin", "", true, "", "", false, false))">
我想摆脱这个自动生成的onclick事件,并且它正在浏览器中的aspnetform中渲染onsubmit事件
<form name="aspnetForm" method="post" action="default.aspx" onsubmit="javascript:return WebForm_OnSubmit();" id="aspnetForm">
我想摆脱这个自动生成的 JavaScript 事件请帮助我解决这个问题,因为其他人也可能有这个问题 提前致谢
最佳答案
它是 javascript,所以你可以完全摆脱它。 (你应该吗?那不是问题..)
只需将其放在页面底部(如果调用,则会抛出异常);
window.WebForm_OnSubmit = null;
window.WebForm_DoPostBackWithOptions = null;
或者覆盖它来执行您想要的操作,包括无操作:
window.WebForm_OnSubmit = window.WebForm_DoPostBackWithOptions = function() { };
或者在文档呈现时使用 javascript 将其从控件中删除:
document.getElementById("ctl00_header1_slidingpanel1_Login1_cmdLogin").onclick = null;
或
document.getElementById("ctl00_header1_slidingpanel1_Login1_cmdLogin").onclick = function()
{
alert("My custom onclick handler");
}
并从表单中删除回发处理程序:
document.getElementById("aspnetForm").onsubmit = null;
但是,如果您不使用回发,也不将客户端 onclick 处理程序附加到此按钮,那么您到底用它来做什么?正常提交表格就可以吗?请提供更多详细信息。
我通常用我自己的自定义函数覆盖 doPostBack 和/或 form.onsubmit 的 ASP.NET 版本,该函数负责处理其他事情,例如强制等待挂起的 AJAX 调用完成(或中止它们).. 取决于我想要实现的目标。
关于javascript - 摆脱 asp.net 中自动生成的 javascript 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19566750/