0

我整天都在这个网站上,似乎找不到我需要的东西——没有重复的帖子。

我有一个包含链接的表单,该链接调用包含不同表单的模式弹出窗口。

###### PARENT PAGE #############
<form...>
...
<a href="php_page.php?id=<?php echo $id; ?>&sect=<?php echo $sect; ?>">link</a>
...
</form>

**** MODAL POPUP ****
<form...>
...
<input type="submit" />
</form>
**** END MODAL POPUP ****

### END PARENT PAGE #############

当我在模态弹出窗口中提交表单时,父页面会刷新以在页面的相应部分显示更新的信息;除了第一个表单没有提交并且当页面刷新以更新必要的部分时,第一个表单的内容会丢失。

我曾尝试使用 ajax 仅刷新页面的必要部分,但这不起作用,因为需要刷新的部分使用带有 mysql 内容的 php 变量。

系统做了它需要做的事情,我不介意刷新。但是我需要一种方法来将用户数据输入到第一个表单中。

是否可以将第一个表单与第二个表单同时提交到同一个 php 页面,或者以任何其他方式在页面重新加载时保留第一个表单中的用户数据而不提交它。

4

2 回答 2

1

你不能用纯 php 做到这一点。您将需要 javascript 并以这样的方式编写它,即当您在模式上点击提交时,它会将信息“放入”回父表单中。

一种方法是使模态表单提交按钮不是实际的提交按钮。

您甚至可以将模态中已填充的部分 dom 元素注入到父表单中。一些 jquery 插件已经这样做了。例如 彩盒

这是一个仅使用 ONE<form>标签和 jquery colorbox 的工作示例。http://jsbin.com/olalam/1/edit

于 2012-12-11T18:12:01.467 回答
0

我不是 php 开发人员,所以我会建议另一种方法。

在刷新页面之前,您可以序列化表单并将数据存储在本地(例如在 cookie 中),然后将数据恢复到表单中。当然,这将需要更多的 JS 代码,但应该可以得到你想要的。

更新:既然你提到你可能需要一些 JS 方面的帮助,这里有一些指导:

  1. 在此处获取jquery.cookie插件。
  2. 在此处获取jquery.deserialize插件。
  3. 使用以下代码作为起点。

.

// the name of the cookie
var cookieName = 'myCookieName';

function beforeSubmit() {
    // serialize the form into a variable
    var serializedForm = $('#id-of-form').serialize();
    // store the serialized form
    $.cookie(cookieName, serializedForm, { path: '/' });
}

function afterRefresh() {
    // read the cookie
    var serializedForm = $.cookie(cookieName);
    // de-serialize the form
    $('#id-of-form').deserialize(serializedForm, true);
}

高温高压

于 2012-12-11T17:57:34.893 回答