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

30 forms jquery

我有一个带有id的HTML表单,我已将此id绑定到提交函数.我想要的是当用户点击提交时,弹出窗口会像模态框一样感谢它们.只有在他们点击屏幕或模式框关闭后,我才希望表单提交并刷新页面.

但我现在拥有的方式似乎无论如何都会刷新.我正在使用模式框的花式弹出插件.

<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; }
            }     
     });
});
Run Code Online (Sandbox Code Playgroud)

正如你所看到的那样,我试图告诉它只在关闭时返回true,但它并没有真正起作用.

有任何想法吗?

Nea*_*eal 60

试试这个:

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
});
Run Code Online (Sandbox Code Playgroud)

javascript是异步的,所以你不能延迟return语句.


UPDATE

要使上面的代码有效,name请将提交按钮更改为其他内容,例如:

<input type="submit" name="submit_me" value="Submit" />
Run Code Online (Sandbox Code Playgroud)

  • @ amustill,`self.subit()`正在调用本机DOM提交操作.如果我做了`$(self).submit()`那么我就会遇到无限循环问题 (10认同)
  • @lonesomeday - 正如我要说的那样.(来自我的+1也是Neal) (2认同)
  • @Neal - 任何其他方式?因为我没有直接访问这个HTML ... (2认同)