CRM 2015 (и, возможно, другие версии), похоже, содержит следующую ошибку:

  1. Поле зарегистрировано с помощью обработчика onChange .
  2. Пользователь меняет это поле и:
  3. Пользователь немедленно нажимает кнопку Сохранить. То есть, прежде чем нажать кнопку «Сохранить», пользователь не нажимает клавишу «Ввод» и не щелкает где-то на форме, чтобы явно потерять фокус.

В результате обработчик onChange этого поля не запускается.

Что можно сделать, чтобы запустить onChange обработчик onChange поддерживаемым способом?

Назовите его, если он существует:

 document.getElementById("field1").onchange=function() { console.log("change handler called") } document.getElementById("form1").onsubmit=function() { this.querySelectorAll("input").forEach(function(fld) { if (fld.onchange) fld.onchange(); }) } 
 {amp}lt;form id="form1"{amp}gt; {amp}lt;input type="text" id="field1" /{amp}gt; {amp}lt;input type="submit" /{amp}gt; {amp}lt;/form{amp}gt; 

Хороший улов. Это должно быть решено путем обучения пользователей. В противном случае мы должны обойти, перехватывая и завершая preventDefault onSave , isDirty атрибуты fireOnchange , затем fireOnchange и затем явный триггер события сохранения.

Как сказано в документации, фокус для onChange должен срабатывать:

Событие OnChange происходит в следующих ситуациях:
• Данные в поле формы изменились, и фокус потерян.

Я был неправ, onChange стреляет.