#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.