首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >出现错误“表单提交被取消,因为表单未连接”

出现错误“表单提交被取消,因为表单未连接”
EN

Stack Overflow用户
提问于 2017-02-05 23:28:44
回答 18查看 211.4K关注 0票数 179

我有一个旧的网站与JQuery 1.7,它工作正常,直到两天前。突然,我的一些按钮不再起作用,在单击它们之后,我在控制台中收到以下警告:

表单提交已取消,因为表单未连接

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

代码语言:javascript
复制
 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();
 }

似乎Chrome56不再支持这种代码了。难到不是么?如果是,我的问题是:

  1. 为什么会突然发生这种情况?没有任何弃用警告?
  2. 此代码的解决方法是什么?
  3. 是否有一种方法可以在不更改任何代码的情况下强制chrome (或其他浏览器)像以前一样工作?

P.S.它在最新的火狐版本中也不起作用(没有任何消息)。它也不能在IE 11.0和Edge中工作!(两者都没有任何消息)

EN

回答 18

Stack Overflow用户

回答已采纳

发布于 2017-02-07 12:39:34

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

document.body.appendChild(form);

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

详细信息:根据HTML标准,如果表单没有关联到浏览上下文(文档),则表单提交将中止。

HTML SPEC参见4.10.21.3.2

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

Chrome code diff请参阅@@ -347,9 +347,16 @

在我看来,与ajax不同,表单提交会导致页面的即时移动。

因此,显示“已弃用的警告消息”几乎是不可能的。

我也认为这种严重的变化不包括在功能更改列表中是不可接受的。Chrome 56功能- www.chromestatus.com/features#milestone%3D56

票数 198
EN

Stack Overflow用户

发布于 2017-12-17 02:00:22

如果您在尝试通过按enter键提交表单时在React JS中看到此错误,请确保表单中未提交表单的所有按钮都有一个type="button"

如果只有一个带有type="submit"button,按Enter将按预期提交表单。

参考

https://dzello.com/blog/2017/02/19/demystifying-enter-key-submission-for-react-forms/ https://github.com/facebook/react/issues/2093

票数 85
EN

Stack Overflow用户

发布于 2017-06-13 22:29:54

或者,将event.preventDefault();包含在事件(HandleSubmit){

请参阅https://facebook.github.io/react/docs/forms.html

票数 18
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42053775

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档