我有一个旧的网站与JQuery 1.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();
}
似乎Chrome56不再支持这种代码了。难到不是么?如果是,我的问题是:
P.S.它在最新的火狐版本中也不起作用(没有任何消息)。它也不能在IE 11.0和Edge中工作!(两者都没有任何消息)
发布于 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
发布于 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
发布于 2017-06-13 22:29:54
或者,将event.preventDefault();包含在事件(HandleSubmit){
https://stackoverflow.com/questions/42053775
复制相似问题