在 main discourse (61e0db0e80) 上,当使用“回车”提交用户偏好设置表单时(例如:更改名称后),表单会以原生方式发送。
这会导致向同一页面发出 GET 请求,并且数据库中没有保存任何更改。
重现步骤:
- 访问偏好设置页面
- 填写/更改名称
- 按下回车键
- 页面重新加载。
在 main discourse (61e0db0e80) 上,当使用“回车”提交用户偏好设置表单时(例如:更改名称后),表单会以原生方式发送。
这会导致向同一页面发出 GET 请求,并且数据库中没有保存任何更改。
重现步骤:
我在这里(meta)无法重现,刚试过,运行正常。
您能在这里也验证一下吗?
好的,我能够在以下环境中重现它:
我正在运行 Debian 13,两个浏览器都来自 Debian 存储库。
很奇怪,我在我的浏览器(Firefox 45.0.2/Chromium: 143.0.7499.40)中无法重现
当你说
这让我想你没有在 Meta 上测试?
FWIW 我可以在 meta 上重现这个问题 ![]()
当我输入我的名字然后按“回车”时,页面会重新加载并清空该值。
我猜想因为它在页面重新加载之前还没有来得及按那个按钮,所以没有保存任何更改?
预计到达时间 (ETA): 似乎在 Firefox 和 Chrome(在桌面/Windows 上)中都会发生这种情况。
好的,很高兴知道。我奇怪为什么我无法重现:confused:
没主意
![]()
但是,如果你能重现,你会寻找什么?我可以再试一次,看看我是否能为你提供信息。
在干净的 dv 环境中 100% 可重现。
在最新版 Chrome 上:
dv new enter-submit
http://enter-submit.localhost/session/user1/become
访问
http://enter-submit.localhost/u/user1/preferences/account
更改名称
点击回车键
页面重新加载。
对于像这样的情况,@martin / @j.jaffeux 在 /frontend/discourse/app/controllers/preferences.js 中感觉如何:
@action
preventSubmit(event) {
event?.preventDefault();
}
<form class="form-vertical" {{on "submit" this.preventSubmit}}>
{{outlet}}
</section>
在这个非常特殊的情况下,我们有一个实际上不是表单的表单,这有点奇怪。
我的意思是“禁用所有浏览器插件后”(我使用了一堆可能会干扰网站原始行为的东西)
我在 Meta 上和全新的开发环境中都进行了测试。