在 ASP.NET 的任何后端操作之前执行 JavaScript 操作

12

在页面进行提交之前,我想在JavaScript中执行一些操作。

如何在任何ASP.NET回发之前运行JavaScript函数?

$('form').submit(function () {
      alert('hello');
});

它不起作用... :(

5个回答

17

我在asp.net论坛上找到了解决方法,它是在代码后端添加一些代码。

只需将此代码添加到您的Page_Load事件处理程序中,将JavaScript字符串更改为您想要发生的内容即可。

string scriptKey = "OnSubmitScript";
string javaScript = "alert('RegisterOnSubmitStatement fired');";
this.ClientScript.RegisterOnSubmitStatement(this.GetType(), scriptKey, javaScript);

1
+1 我知道这已经很久了,但是非常感谢!它对我帮助很大。 - user3439065

5
如果你希望在asp回传之前进行客户端操作,可以尝试使用asp:buttonOnClientClick属性,例如:

OnClientClick="return confirm('确认提交吗?')"

。请注意保留原有的HTML标签。
<asp:Button OnClick="submit" OnClientClick="myPrePostbackFunction()" Text="Submit" runat="server" ... />

我知道这一点,但是我的页面上有很多ASP元素,我想在任何回发之前执行此代码,而不是为特定的按钮或元素。 - Emech

2

尝试:

$('form').submit(function () {
    return confirm('you sure?');
});

除非您返回true,否则表单将不会提交, 在此之前您可以做任何想做的事情。 当然,这不一定是一个confirm()调用。

很奇怪,您使用什么浏览器进行测试? - lmcanavals

1

在2021年,我完全放弃了jQuery。为了做到这一点,我向我的页面添加了JavaScript:

document.forms[0].addEventListener('submit', e => {
if (conditionPreventingPostBack) {
    e.preventDefault();
    return false;
    }
});

0

试试这个?

    <form name="someform">
    <input type="submit" value="" />
</form>
<script type="text/javascript">
document.someform.onsubmit = function  ( e ) {
    e = e|| window.event;
    if ( !confirm ( "sure?") ){
        e.returnValue ? ( e.returnValue = false ):  e.preventDefault();
    }
}
// then jquery version
$("form").bind("submit", function  ( e ) {
    if ( !confirm ( "sure?" ) ){
        e.preventDefault();
    }
})
</script>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接