我们可以运行javascript并禁用渲染吗?

时间:2011-10-27 23:59:33

标签: javascript asp.net javascript-events

上下文

我正在开发一个非常复杂的网站框架,其中包括许多客户端操作表单,其动态外观可用于即时切换(许多代码在页面加载和卸载时运行)。

我需要能够动态更改各种类型的许多输入(或只读,如果可用)的禁用状态。

问题

许多HTML表单输入类型的核心设计搞砸了(至少非常不一致),当与运行asp.net的服务器结合使用时,它甚至更加怪异。

更具体地说,正如你们中的一些人所知,对任何输入执行disabled =“true”都会终止回发,因为在提交表单时它实际上没有发布。

可能的解决方案

on page unload我可以非常轻松地删除每个使用它的控件的禁用状态,...这解决了“数据完整性”问题......

但是有一个很大的警告:

卸载终止时整个显示屏闪烁(因为所有控件立即返回启用状态),然后在服务器回复时页面处于小于标称状态。

杀手问题

是否有一种方法可以让onbeforeunload或unload事件以不会对屏幕进行任何操作的方式运行?

OR是否有一种方法可以显示控件 AS 如果它已被禁用,但它仍然实际上已发布到服务器?

或者,是否有人有想法可能会推动我找到解决方案?

提前感谢!

[编辑] 我有机会只支持chrome,所以这可能为你们中的一些铬天才开辟了解决方案。

2 个答案:

答案 0 :(得分:4)

在表单发布时,您还可以使用第二个隐藏表单(隐藏显示:无)它可以存在于原始页面中,也可以通过JS动态创建。第二种形式的所有项目均未被禁用。提交后,您可以将原始表单中的值复制到第二个表单,然后提交第二个表单。你从不修改任何可见的东西,所以屏幕上没有任何变化。您可以在演示文稿中自由使用禁用,但仍然可以从表单的第二个副本提交后将所有值发送到服务器。

答案 1 :(得分:1)

请勿在卸载时删除禁用,在提交表单时执行此操作,并且disabled only不是disabled="true"