0

谁能告诉我如何在两页上提交表单,如果表单在第二页上关闭,这仍会自动提交第一页的信息?

例如

第 1 页:全名 电子邮件 电话号码

用户点击提交...

第 2 页:感谢提交您的详细信息,请选择回电时间..

然后,用户将关闭窗口或输入回调时间并按提交,但即使他们关闭第二页上的窗口并且不输入回调时间,我也需要提交原始信息。

我在想也许可以使用会话变量来存储信息,然后如果窗口关闭,可能使用 javascript/jquery 来提交表单?

谁能建议最好的办法是这样做?

我可能还应该提到我将数据插入到 MySQL 表中,然后使用 CURL 发布数据。因此,如果提交了回调时间,我可以很容易地插入数据库,然后只需在最后一个 id 上执行更新语句。

但是如果窗口在第二个表单页面上关闭,我不知道如何发布最后一条 MySQL 记录?

4

3 回答 3

1
$(window).bind('beforeunload', function() { 
    $("#form-submit").click();
});

其中#form-submit 是您的提交按钮的ID。

于 2012-11-29T13:43:04.937 回答
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方法不适用于提交事件,因此如果您添加一个新表单,您还需要将处理程序绑定到它。

请注意,如果不同的事件处理程序取消提交或导航,如果稍后实际关闭窗口,您将丢失确认提示。你可以通过记录submitclick事件中的时间来解决这个问题,并检查是否在beforeunload几秒钟后发生。

于 2012-11-29T13:52:24.403 回答
0

你真的不能。

$(window).bind('beforeunload', function() { 
    // Do submit here
});

可能看起来有效,但是

a) 在 beforeunload 阶段不允许进行常规表单提交(即使用 POST 或 GET 重定向到另一个页面),因此无法正常工作。

b) AJAX 表单提交触发,但您永远无法确定它们是否会到达,因为浏览器不会等待回调发生,而是会在您的代码运行后简单地关闭窗口。

于 2012-11-29T14:04:38.643 回答