“由于表单未连接而取消表单提交”

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (29)

我有一个JQuery1.7的旧网站,直到两天前它才正确运行。突然,我的一些按钮不再工作了,在单击它们之后,我在控制台中得到了以下警告:

由于表单未连接,表单提交被取消

单击背后的代码如下所示:

 this.handleExcelExporter = function(href, cols) {
   var form = $('<form method="post"><input type="submit" /><input type="hidden" name="layout" /></form>').attr('action', href);
   $('input[name="layout"]', form).val(JSON.stringify(cols));
   $('input[type="submit"]', form).click();
 }

看来Chrome 56不再支持这种代码了。是吗?如果是,我的问题是:

  1. 为什么这事突然发生了?没有任何反对警告?
  2. 这段代码的解决方法是什么?
  3. 有没有办法强迫Chrome(或其他浏览器)像以前一样工作而不更改任何代码?

提问于
用户回答回答于

快速回答:将表单附加到正文中。

document.body.appendChild(form);

或者,如果你使用上面的jQuery: $(document.body).append(form);

详细信息:根据HTML标准,如果表单未与浏览上下文(文档)相关联,表单提交将被中止。

HTML SPEC见4.10.21.3.2

在Chrome 56中,此规范已应用。

用户回答回答于

你必须确保表单在文档中。你可以把表格附加到正文上。

扫码关注云+社区