Как обнаружить изменения для внутренних элементов ASP.NET Элемент управления AJAX?

#javascript #jquery #asp.net #asp.net-ajax

#javascript #jquery #asp.net #asp.net-ajax

Вопрос:

В пользовательском ASP.NET Элемент управления AJAX, я пытаюсь получить все внутренние входные данные элемента, который представляет контейнер, и обнаружить их изменения.

Следующее работает только в IE 9 и FF:

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

Поиск элементов ввода с типом текста и флажка у меня вообще не работает.

Какой хороший кроссбраузерный способ обнаружить изменения для внутренних элементов родительского элемента?

Ответ №1:

Я понимаю, что это довольно старое, просто наткнулся на это и подумал, что я что-нибудь придумаю для следующего парня. Сработает ли что-то подобное?

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

Комментарии:

1. Возможно, но я столкнулся с тем, что использовал элементы управления Telerik, и некоторые из этих элементов управления сбивали меня с толку. В итоге я вместо этого нацелился конкретно на каждый элемент управления. Некоторые причины также заключались в том, что, например, в их элементе управления выбора даты кнопка запускает календарь и изменяет связанное текстовое поле, которое не запускает событие изменения, поэтому мне пришлось очень тщательно подходить к обработке изменений. В большинстве сценариев, вероятно, достаточно того, что у вас есть.

Ответ №2:

В итоге я добавил кое-что, ориентированное на различные типы элементов управления (поскольку я использовал Telerik). Я не могу опубликовать результат, но в итоге я сделал что-то вроде:

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

И так далее для каждого элемента управления (ориентируясь на них по их классу CSS. Сложность возникла из-за ASP.NET Фреймворк AJAX и как работали API JavaScript.