【问题标题】:How to detect changes for the inner elements of an ASP.NET AJAX control?如何检测 ASP.NET AJAX 控件内部元素的更改?
【发布时间】:2011-05-29 02:39:48
【问题描述】:

在自定义 ASP.NET AJAX 控件中,我试图获取代表容器的元素的所有内部输入,并检测它们的变化。

以下仅适用于 IE 9 和 FF:

if (this.get_watchChanges()) {
    $(this.get_element()).find(":input").change(function() {
         //mark dirty
    });
}

寻找具有文本类型和复选框的输入元素根本不适合我。

有什么好的跨浏览器方法可以检测父元素内部元素的变化?

【问题讨论】:

    标签: javascript jquery asp.net asp.net-ajax


    【解决方案1】:

    我意识到这已经很老了,只是偶然发现了它,并以为我会为下一个人做点什么。像这样的东西有用吗?

    <script type="text/javascript">
       var isDirty = false;
       $(document).ready(function() {
          isDirty = false;
          $("input, input[@type=checkbox]").change(function() {
             isDirty = true;
          });
       });
    </script>
    

    【讨论】:

    • 可能,但我遇到的是我使用 Telerik 控件,其中一些控件让我失望。我最终改为专门针对每个控件。一些原因也是如此,例如,使用他们的日期选择器控件,一个按钮会触发一个日历并更改相关的文本框,这不会触发更改事件,因此我必须非常具体地处理我的更改。在大多数情况下,您所拥有的可能就足够了。
    【解决方案2】:

    我最终添加了一些针对各种类型控件的内容(因为我使用的是 Telerik)。我无法发布结果,但我最终做了类似的事情:

    $(".RadDatePicker").each(function() { /* attach to date change event */ });
    

    对于每个控件等等(以它们的 CSS 类为目标。复杂性来自 ASP.NET AJAX 框架以及 JavaScript API 的工作方式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-11-08
      • 1970-01-01
      • 2013-08-29
      • 2016-04-25
      • 1970-01-01
      • 2010-11-14
      • 2022-12-09
      相关资源
      最近更新 更多