问题描述
|
我有一个带有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方法在您自己的表单范围内调用它