1

我正在提交一个异步表单。因此,我不希望页面重新加载并因此preventDefault在处理程序中调用,但它仍然会在提交时重新加载页面。就我阅读其他主题而言,这应该足以禁用页面重新加载,但显然,我遗漏了一些东西。

$( "#loginForm" ).submit( function( event ) {

    try {
        event.preventDefault();
        // Some async handling
    } catch( ex ) {
        alert( ex );
    }
    return false;

} );

有人可以指出我的方法中的问题吗?整个事情发生在一个QtWebkit控件内部。

编辑:

现在也试过了:

$( "#submitButton" ).on( "click", function( event ) {
    try {
        // Some async handling
    } catch( ex ) {
        alert( ex );
    }
    return false;
} );

没有不同的结果。

4

4 回答 4

0

如果 #loginForm 指的是表单本身(而不是提交输入),那么这就是您的问题。将事件指向提交输入本身。如果失败,请将输入提交更改为按钮,这绝对可以。

编辑:

将输入提交按钮更改为:

    <button id="submitButton">Submit</button>

这种方式没有默认阻止,因为它不是表单输入提交。此按钮永远不会重新加载页面。然后你只需要附加一个点击事件到#submitButton

于 2013-07-01T15:50:40.240 回答
0

尝试查看 loginForm 提交事件是否被捕获:

$( "#loginForm" ).submit( function( event ) {
    alert('submit event fired');
});

如果它正在触发,请尝试以下操作:

$( "#loginForm" ).submit( function( event ) {
    event.preventDefault();
    try {
        //do something in here
        // Some async handling
    } catch( ex ) {
        alert( ex );
    }
    return false;
});
于 2013-07-01T15:48:22.027 回答
0

顺便说一句,它是 ASP.NET Web 表单吗?表单 ID 会不同,而不是#loginForm

先做一些处理,然后调用e.preventDefault,而不是像 Matthias 的代码那样反过来。

另请参阅'return false;'之间的区别 和'e.preventDefault()

于 2013-07-01T15:47:14.760 回答
0

两者都return false;event.preventDefault();预期工作。看到这个小提琴。您的事件处理程序可能有问题。

$( "#loginForm" ).submit( function( event ) {
    try {
        // Some async handling
    } catch( ex ) {
        alert( ex );
    }

    event.preventDefault();  // or return false;
} );
于 2013-07-01T15:43:53.647 回答