javascript - 在beforeunload中添加隐藏字段

标签 javascript jquery forms post

在我的页面上,我使用的表单在提交时应该获得一些额外的隐藏字段。然而问题是我不知道表单的名称/id 也不知道提交按钮,所以我不能使用 onClick 等函数。因此,当用户尝试离开时,我使用 beforeunload 事件来触发事件页面(这包括提交表单)。我正在使用 document.activeElement 来找出触发事件的原因,如果它是表单/提交,我会将隐藏字段添加到表单中。

将代码简化为这样:

var javascriptData = ['val1','val2','val3']; // usually gets values dynamically and can differ in size
$(window).bind('beforeunload', function(e) {
    var activeForm = document.activeElement.form;
    for(var i = 0; i < javascriptData.length; i++){
        $(activeForm).append('<input type="hidden" name="test-data[]" value="'+javascriptData[i]+'" />');
    }
    return false; // just for debug purposes.
}

代码有效,元素已添加到表单中,但它没有显示在下一页的 $_POST 中。但是,最后一行代码(返回 false)会创建一个弹出窗口,询问我是否要离开页面,如果我留在页面上,请再次按提交按钮,然后然后离开页面并检查 $_POST,那里的字段。我的猜测是 $_POST 的数据是在触发 beforeunload 函数之前收集的。

我的问题是:“有没有办法解决这个问题,以便我可以在 beforeunload 事件中向表单添加隐藏字段?”。

非常感谢您的帮助,提前致谢。

最佳答案

为什么不将其添加到页面上的所有表单中?

$(document).ready(function() {
  $("form").append('<input type="hidden" name="test-data[]" value="test" />');
});

关于javascript - 在beforeunload中添加隐藏字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8443082/

相关文章:

javascript - jQuery\JavaScript - 更新元素文本时遇到问题

javascript - 如何将一个div变成一个复选框

javascript - 如何动态更新 css 类 onclick 下拉 jquery

javascript - 将 javascript 数组传递给没有 ajax 的表单/$_POST

javascript - Vue.js 提交文本按钮

java - 模拟 JSP 的 post 方法与创建 API

javascript - 三.js | TWEEN.js |平稳旋转相机

javascript - live() 更改在 IE8 上的 jquery 1.4.2 中不起作用

javascript - 聚合组多个_id和访问权限

javascript - 如何在 WordPress 中使用 javascript/jquery 调整图像大小?