有人可以告诉我如何在两页上提交表格,如果表格在第二页上关闭,这仍然会自动提交第一页的信息吗?
E.g。
第1页: 全名 电子邮件 电话号码
用户点击提交...
第2页: 感谢您提交详细信息,请选择回电时间..
然后用户关闭窗口或输入回叫时间并按提交,但即使他们关闭第二页上的窗口并且没有输入回叫时间,我也需要提交原始信息。 / p>
我想也许可能会使用会话变量存储信息,然后可能javascript / jquery在窗口关闭时提交表单?
有人能说最好的是这样做吗?
我应该提一下,我将数据插入MySQL表,然后使用CURL发布数据。因此,如果提交回调时间,我可以很容易地插入到数据库中,然后在最后一个id上执行更新语句。
但是如果窗口在第二个表单页面上关闭,我不知道如何发布最后一条MySQL记录?
答案 0 :(得分:1)
$(window).bind('beforeunload', function() {
$("#form-submit").click();
});
其中#form-submit是提交按钮的ID。
答案 1 :(得分:1)
当用户出于任何原因离开您的网页时,beforeunload
事件就会触发。
例如,如果用户提交表单,单击链接,关闭窗口(或选项卡)或使用地址栏,搜索框或书签转到新页面,则会触发它。
您可以使用以下代码排除表单提交和超链接(其他框架除外):
var inFormOrLink;
$('a').live('click', function() { inFormOrLink = true; });
$('form').bind('submit', function() { inFormOrLink = true; });
$(window).bind("beforeunload", function() {
return inFormOrLink || confirm("Do you really want to close?");
})
live
方法不适用于提交事件,因此如果添加新表单,则还需要将处理程序绑定到该表单。
请注意,如果其他事件处理程序取消了提交或导航,如果稍后实际关闭该窗口,您将丢失确认提示。您可以通过在submit
和click
事件中记录时间来检查这一点,并检查beforeunload
是否会在几秒钟后发生。
答案 2 :(得分:0)
你真的不能。
$(window).bind('beforeunload', function() {
// Do submit here
});
似乎可行,但
a)在前载阶段期间不允许提交常规表单(即,使用POST或GET重定向到另一个页面),因此无法正常工作。
b)AJAX表单提交将触发,但你永远不会确定它们会到达,因为浏览器不会等待回调发生,而只是在你的代码运行后关闭窗口