我正在使用 jQuery 表单插件来绑定同一页面上两个表单的提交事件,以便将它们提交到单独的 PHP 脚本,这些脚本将标记返回到页面上的单独 div。
一种形式刷新下一种形式。我使用“实时”,因此每个表单在刷新时都会重新绑定其事件:
$(document).ready(function() {
/* Form 1 */
$('#frmSearch').live('submit', function() {
$(this).ajaxSubmit({
target: '#divResults',
url: 'search_div.php'
});
return false;
});
/* Form 2 */
$('#frmResults').live('submit', function() {
$(this).ajaxSubmit({
target: '#divLookup',
url: 'lookup_div.php',
});
return false;
});
});
到现在为止还挺好。每个表单都可以使用 ajax 一次又一次地提交,并且所有绑定从一次提交到下一次都存在。
当我尝试绑定第三个表单并在第二个表单的“成功”选项中触发其提交事件时,就会出现问题:
/* Form 2 */
$('#frmResults').live('submit', function() {
$(this).ajaxSubmit({
target: '#divLookup',
url: 'lookup_div.php',
success: function(responseText){
$('#frmLookup').submit();
}
});
return false;
});
/* Form 3 */
$('#frmLookup').live('submit', function() {
$(this).ajaxSubmit({
target: '#divMappings',
url: 'mapped_items_div.php',
});
return false;
});
当我这样做时,ajaxSubmit 成功执行,但随后表单的默认提交也被执行,导致页面重新加载。请注意,我确实包含了“return false”;禁止表单的默认提交,但由于某种原因它仍然提交。
我发现,如果我在 Form 2 的成功函数中使用与 Form 3 的“live”相同的选项“绑定”Form 3 的“提交”事件,则不会执行表单的默认提交。不过,这是多余的,如果可以的话,我想避免这样做。
如何抑制 Form 3 的默认提交行为?