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

发布于 2024-11-08 21:56:47 字数 632 浏览 0 评论 0原文

我有一个带有 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; }
            }     
     });
});

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

有什么想法吗?

I have this HTML form with an id and I have binded this id to the submit function. What I want is when a user clicks submit, a popup comes up like a modal box thanking them. And only after they click off the screen or when the modal box closes is when I want the form to submit and refresh the page.

But the way I have it now seems it will refresh no matter what. I am using the fancy popup plugin for the modal box.

<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; }
            }     
     });
});

As you can see I am trying to tell it to return true only on close but it isn't really working.

Any ideas?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

试试这个:

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 语句。


更新

要使上面的代码正常工作,请将提交按钮的名称更改为其他内容,例如:

<input type="submit" name="submit_me" value="Submit" />

Try this:

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 is asynchronous so you cannot delay the return statement.


UPDATE

To make it so that the code above works, change the name of you submit button to something else, for example:

<input type="submit" name="submit_me" value="Submit" />
一梦浮鱼 2024-11-15 21:56:47

(在 Neal 的回答下回答 Rick 的问题:“还有其他方式吗?因为我无法直接访问此 html”)

如果您出于某种原因需要一个提交按钮来拥有 ID="提交”并且不能使用 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

即创建新的空表单并使用其提交方法在您自己的表单范围内调用它

(response to Rick's question under Neal's answer: "any other way? Because I don't have direct access to this html")

If you, for some reason, need a submit button to have ID="submit" and cannot use form.submit method (because it links to "input[type=submit]#submit" button) you can do this:

$('<form>')[0].submit.call(form); //jQuery
//OR:
document.createElement('form').submit.call(form); //pure HTML w/o any framework

i.e. create new empty form and use its submit method to call it in scope of your own form

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文