Запустить onChange, когда измененное поле не потеряло фокус, но форма была сохранена - PullRequest
0 голосов
/ 01 марта 2019

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

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

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

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

Ответы [ 2 ]

0 голосов
/ 01 марта 2019

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

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

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

0 голосов
/ 01 марта 2019

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

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();
   })  
}
<form id="form1">
<input type="text" id="field1" />
<input  type="submit" />
</form>
...