Как я понимаю, вы не можете триггерить события для элементов формы ибо у вас нет доступа к ним. В таком случае единственный выход, который я вижу, это интервалом отслеживать изменения в форме (hidden-поля в том числе):
var form = {};
form.$el = $('form');
form.oldData = form.$el.serialize();
form.isDataChanged = function() {
var newData = form.$el.serialize();
if (form.oldData !== newData) {
form.oldData = newData;
return true;
}
return false;
};
window.setInterval(function() {
if (form.isDataChanged()) {
// форма изменилась - дизейблим кнопку или чо там
}
}, 250); // разумный интервал
UPD: Если же доступ всё же есть, то лучше всего триггерить нужное событие там, где скриптом что-то вставляется:
$('form :input').on('change', function() {
// форма изменилась - дизейблим кнопку или чо там
});
// ...
// где-то дальше в коде вставляем в форму данные скриптом
$('form input[type="text"]').eq(0).val('новое значение').trigger('change'); // триггерим событие вручную