Воскрешение этого старого вопроса, потому что я подумал о более простом / лучшем способе.Вместо прослушивания событий на различных входах вы можете сериализовать исходные данные формы, сохранить их, а затем снова сериализовать и проверить, изменились ли они, например:
var originalFormData = $('form#formId').serialize();
function checkFormChanged() {
if(originalFormData !== $('form#formId').serialize()) {
//it's dirty!
}
}
Еще одно дополнительное преимущество заключается в следующем:что если пользователь вносит изменение, а затем возвращает его, эта проверка сообщит, что форма очищена.