【问题标题】:Run custom Javascript whenever a client-side ASP.NET validator is triggered?每当触发客户端 ASP.NET 验证器时运行自定义 Javascript?
【发布时间】:2008-10-02 02:38:06
【问题描述】:

有没有办法在触发客户端 ASP.NET 验证器(RequiredFieldValidatorRangeValidator 等)时运行一些自定义 Javascript?

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

【问题讨论】:

    标签: asp.net javascript


    【解决方案1】:

    请参阅this comment,了解我如何设法扩展 ASP.Net 客户端验证。 Others 已经设法使用服务器端技术对其进行了扩展。

    【讨论】:

    • 我希望 ASP.NET 提供了一个公共 API 来执行此操作,但覆盖 JS 函数会起作用。
    【解决方案2】:

    针对我的具体情况,我确定的最佳解决方案是:

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

    这在很多方面都很丑陋,它只是针对我的特定场景的解决方案,而不是我们想要将任意代码搭载到验证器的显示/隐藏上的抽象案例。我希望有更好的建议!

    【讨论】:

      【解决方案3】:

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

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

      HTH,

      【讨论】:

      • 这肯定比我目前使用的 hack 更好,但我真的在寻找一种方法来在全球范围内利用验证周期,而不是单独处理每个验证器。
      猜你喜欢
      • 1970-01-01
      • 2010-10-16
      • 1970-01-01
      • 1970-01-01
      • 2017-05-08
      • 2010-09-05
      • 2017-05-03
      • 2014-03-19
      • 2012-12-03
      相关资源
      最近更新 更多