我正在提交表单异步。因此,我不希望页面重新加载,因此在处理程序中放置了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;
} );
没有不同的结果。
答案 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