在QWebView中防止表单重新加载

时间:2013-07-01 15:31:36

标签: javascript jquery ajax forms qt4

我正在提交表单异步。因此,我不希望页面重新加载,因此在处理程序中放置了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 个答案:

答案 0 :(得分:0)

return false;event.preventDefault();都按预期工作。见Fiddle。你的事件处理程序可能有问题。

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

    event.preventDefault();  // or return false;
} );

答案 1 :(得分:0)

顺便提一下,它是ASP.NET Web表单吗?表单ID会有所不同,而不是#loginForm

首先进行一些处理,然后调用e.preventDefault,而不是像马蒂亚斯的代码那样调用。

另请参阅The difference between ‘return false;’ and ‘e.preventDefault()

答案 2 :(得分: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;
});

答案 3 :(得分:0)

如果#loginForm指的是表单本身(而不是提交输入),那那就是你的问题。将事件指向提交输入本身。如果失败,请将输入提交更改为按钮,这肯定会有效。

编辑:

将输入提交按钮更改为:

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

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

即可