2008-10-02 56 views
2

当客户端ASP.NET验证器(RequiredFieldValidator,RangeValidator等)被触发时,是否有办法运行一些自定义Javascript?每当客户端ASP.NET验证器被触发时运行自定义JavaScript?

基本上,我有一个复杂的布局,需要我运行一个自定义脚本,无论何时显示或隐藏DOM元素。我正在寻找一种在验证器显示时自动运行此脚本的方法。 (我使用的验证与Display="dynamic"

回答

2

this comment对我如何设法延长ASP.Net客户端验证。 Others已经设法使用服务器端技术来扩展它。

+0

我希望ASP.NET提供了一个公共API来做到这一点,但覆盖JS函数将工作。 – 2008-10-02 14:15:42

0

我已经确定我的具体情况最好的解决办法是这样的:

  1. 创建一个全局JS数据结构映射控件ID的可见性状态。
  2. 在这个数据结构中注册验证器的客户端ID(或者其他任何东西)。
  3. 每250毫秒循环遍历全局数据结构,并将缓存的可见性状态与元素的当前状态进行比较。如果状态不同,请更新缓存并运行自定义调整大小脚本。

这在很多方面都很难看,它只是针对我的特定场景的一种解决方案,而不是抽象的情况下,我们希望将任意代码搭载到验证器的显示/隐藏上。我很乐意提供更好的建议!

0

我不确定如果你的问题没有问题,但是这里可以...你可以添加一个自定义的验证器(或者处理onblur事件),在你的javascript自定义验证中,你可以调用Page_ClientValidate()并检查Page_IsValid错误。像下面的代码:

function customValidation() 
{ 
    Page_ClientValidate(); 
    if(!Page_IsValid) 
    { //run your resize script } 
} 

HTH,

+0

这当然比我目前使用的黑客好,但我真的想要一种方法来在全局级别上使用验证周期,而不是单独处理每个验证程序。 – 2008-10-02 14:10:00