我正在开发一个非常复杂的网站框架,其中包括许多客户端操作表单,其动态外观可用于即时切换(许多代码在页面加载和卸载时运行)。
我需要能够动态更改各种类型的许多输入(或只读,如果可用)的禁用状态。
许多HTML表单输入类型的核心设计搞砸了(至少非常不一致),当与运行asp.net的服务器结合使用时,它甚至更加怪异。
更具体地说,正如你们中的一些人所知,对任何输入执行disabled =“true”都会终止回发,因为在提交表单时它实际上没有发布。
on page unload我可以非常轻松地删除每个使用它的控件的禁用状态,...这解决了“数据完整性”问题......
但是有一个很大的警告:
卸载终止时整个显示屏闪烁(因为所有控件立即返回启用状态),然后在服务器回复时页面处于小于标称状态。
是否有一种方法可以让onbeforeunload或unload事件以不会对屏幕进行任何操作的方式运行?
OR是否有一种方法可以显示控件 AS 如果它已被禁用,但它仍然实际上已发布到服务器?
或者,是否有人有想法可能会推动我找到解决方案?
提前感谢!
的 [编辑] 我有机会只支持chrome,所以这可能为你们中的一些铬天才开辟了解决方案。
答案 0 :(得分:4)
在表单发布时,您还可以使用第二个隐藏表单(隐藏显示:无)它可以存在于原始页面中,也可以通过JS动态创建。第二种形式的所有项目均未被禁用。提交后,您可以将原始表单中的值复制到第二个表单,然后提交第二个表单。你从不修改任何可见的东西,所以屏幕上没有任何变化。您可以在演示文稿中自由使用禁用,但仍然可以从表单的第二个副本提交后将所有值发送到服务器。
答案 1 :(得分:1)
请勿在卸载时删除禁用,在提交表单时执行此操作,并且disabled
only不是disabled="true"
。