在提交表单之前执行操作?

问题描述

| 我有一个带有ID的HTML表单,并且已将此ID绑定到Submit函数。我想要的是,当用户单击“提交”时,会弹出一个弹出窗口,就像一个模式框,感谢他们。只有在他们单击屏幕或关闭模式框后,我才需要表单提交和刷新页面。 但是我现在拥有它的方式似乎无论如何都会刷新。我正在使用花式弹出插件的模式框。
<form action=\"submit-comment.PHP\" method=\"post\" id=\"form\">
<input type=\"text\" name=\"comment\" />
<input type=\"submit\" name=\"submit\" value=\"Submit\" />
</form>

jQuery(\"#form\").submit(function() {
     jQuery.fancybox(\'<div class=\"Box\">Some content</div>\',{
           \'onClosed\' : function() { return true; }
            }     
     });
});
如您所见,我试图告诉它仅在关闭时返回true,但实际上并没有起作用。 有任何想法吗?     

解决方法

尝试这个:
jQuery(\"#form\").submit(function(e) {
     var self = this;
     e.preventDefault();
     jQuery.fancybox(\'<div class=\"box\">Some amazing wonderful content</div>\',{
           \'onClosed\' : function() { 
                          self.submit();
                        }
     });
     return false; //is superfluous,but I put it here as a fallback
});
javascript是异步的,因此您不能延迟return语句。 更新 为了使上面的代码起作用,请将您提交按钮的
name
更改为其他内容,例如:
<input type=\"submit\" name=\"submit_me\" value=\"Submit\" />
    ,(在Neal的回答下回答Rick的问题:““还有其他方法吗?因为我无法直接访问此html””) 如果您由于某种原因需要提交按钮具有ID = \“ submit \”并且不能使用form.submit方法(因为它链接到\“ input [type = submit] #submit \”按钮),则可以执行此操作:
$(\'<form>\')[0].submit.call(form); //jQuery
//OR:
document.createElement(\'form\').submit.call(form); //pure HTML w/o any framework
即创建新的空表单并使用其Submit方法在您自己的表单范围内调用它