У меня была такая же проблема, и я думал о едином решении. Приведенный ниже код не является идеальным, это из начальных исследований. Ниже приведены шаги, которые я использовал:
1) Переместить следующий JS в другой файл (скажем, changeFramework.js)
2) Включите его в свой проект, импортировав его
3) На вашей html-странице, какой бы элемент управления не нуждался в мониторинге, добавьте класс "monitorChange"
4) Глобальная переменная hasChanged сообщит, есть ли какие-либо изменения на странице, над которой вы работаете.
<script type="text/javascript" id="MonitorChangeFramework">
// MONITOR CHANGE FRAMEWORK
// ALL ELEMENTS WITH CLASS ".monitorChange" WILL BE REGISTERED FOR CHANGE
// ON CHANGE IT WILL RAISE A FLAG
var hasChanged;
function MonitorChange() {
hasChanged = false;
$(".monitorChange").change(function () {
hasChanged = true;
});
}
Ниже приведены элементы управления, в которых я использовал эту платформу:
<textarea class="monitorChange" rows="5" cols="10" id="testArea"></textarea></br>
<div id="divDrinks">
<input type="checkbox" class="chb monitorChange" value="Tea" />Tea </br>
<input type="checkbox" class="chb monitorChange" value="Milk" checked='checked' />Milk</br>
<input type="checkbox" class="chb monitorChange" value="Coffee" />Coffee </br>
</div>
<select id="comboCar" class="monitorChange">
<option value="volvo">Volvo</option>
<option value="saab">Saab</option>
<option value="mercedes">Mercedes</option>
<option value="audi">Audi</option>
</select>
<button id="testButton">
test</button><a onclick="NavigateTo()">next >>> </a>
Я считаю, что в этой структуре может быть огромное улучшение. Комментарии / изменения / отзывы приветствуются. :)