Использовать отслеживание грязного состояния. Прикрепите логическое значение (например, IsDirty) к каждому элементу управления вводом и переключайте его при каждом изменении значения. При отправке формы проверьте, изменилось ли хотя бы одно или несколько значений, а затем отправьте форму. В противном случае отобразите предупреждение для пользователя.
Другим решением является вызов общей функции при изменении значения элемента управления. В этой функции вы можете установить для глобальной переменной (IsDirty) значение true, если что-то изменилось, а также включить / отключить кнопку отправки.
var isDirty = false;
function SomethingChanged(){
if( !isDirty ) isDirty = true;
btnSubmit.disabled = !isDirty;
}
Общая функция для любого элемента управления
Допущения: добавьте начальное значение каждого элемента управления к атрибуту "InitVal"
function SomethingChanged(control){
if( control.value != control.InitVal )
control.IsDirty = true;
else
control.IsDirty = false;
}
В приведенной выше функции, чтобы сделать ее универсальной, вы можете иметь отдельные функции для каждого типа элемента управления, например TextBoxChanged, DropDownChanged и т. Д. Но иметь следующие два атрибута для каждого элемента управления
- InitValue - Начальное значение элемента управления
- IsDirty - логическое значение, указывающее, что значение элемента управления изменилось