【发布时间】:2012-08-29 15:20:28
【问题描述】:
我正在处理可能需要几秒钟才能提交的 HTML 表单。我想禁用表单中的某些字段在提交之后。
我可以在表单的submit 事件的处理程序中执行此操作,但这会在表单提交之前触发。如果我禁用这些控件,它们的值不会包含在发送到服务器的发布数据中。
我尝试在我的处理程序中取消提交事件,从表单中删除我的submit 事件处理程序,自己通过 JavaScript 提交表单,然后然后禁用控件,但问题在那里是我需要知道用户点击了哪个按钮来提交表单。此信息在原始表单提交中,但显然不在我手动触发的那个中(因为没有单击任何按钮)。
我可以尝试将此信息复制到我的手动表单提交中,但是有没有办法在表单提交后运行我的禁用代码?
【问题讨论】:
-
你不能在“提交”处理程序中将它们设为
readonly吗? -
使用提交按钮的点击事件来禁用你的字段。
-
@j08691 “点击”也发生在表单提交之前;这与在“提交”处理程序中执行的操作几乎相同。
-
表单提交后禁用是什么意思?一个 sibmit 开始一个新的请求;表格正在消失。重点是什么?如果要防止重复提交,请禁用所有提交按钮。我想您可以将禁用的字段复制到隐藏字段,但您正在与竞争条件作斗争 - 为什么要打扰?
-
@DaveNewton:表单可能需要几秒钟才能真正提交,因此它的 UI 可能会在屏幕上停留的时间比您预期的要长。 (我认为 - 我还没有在生产中实际测试过。)
标签: javascript html forms