我在asp.net CustomValidator中使用jquery ajax来查询服务器。因为这可能需要一些时间,我试图使用BlockUI阻止UI。
然而它不适用于Chome& IE9。在ajax调用完成之前,显示不会被阻止,然后立即清除。我已经将淡入设置设置为0.它在Firefox中有效,如果我在阻止显示的行上设置断点然后逐步执行它,它在Chrome中可以工作。
现在,当附加到按钮的单击事件时,相同的代码可以正常工作。所以我猜这个问题与提交事件内部或者在提交事件调用的asp.net验证链内部有关。虽然在单步执行代码时它起作用的事实可能意味着潜伏在某个地方的计时器。
但是知道这一点并没有让我解决这个问题 - 所以如果有人可以提供帮助,我将不胜感激。
答案 0 :(得分:0)
好的,问题实际上是使用了一个同步的ajax调用,我发现它已停止任何浏览器活动,包括显示更新!我通常不会使用同步ajax调用,但在这种情况下,因为它在验证程序中需要阻止表单提交。
该主题讨论了可用于解决真实问题的各种选项:)
How do I do a jQuery blocking AJAX call without async = false?
进一步注意,尝试在提交过程中通过ajax调用服务端验证实际上是一个有缺陷的设计,除非有人准备构建必要的状态机来取消提交过程然后阻止UI直到ajax返回然后继续提交流程与否。