当更改的字段没有失去焦点但表单已保存时,触发onChange

时间:2019-03-01 10:24:38

标签: javascript dynamics-crm dynamics-crm-2015

CRM 2015(可能还有其他版本)似乎存在如下错误:

  1. 使用onChange处理程序注册了一个字段。
  2. 用户更改此字段,然后:
  3. 用户立即单击保存。也就是说,在单击“保存”按钮之前,用户既不按Enter键也不单击表单上的某处以显式释放焦点。

结果是未触发此字段的onChange处理程序。

如何以受支持的方式触发未触发的onChange处理程序?

3 个答案:

答案 0 :(得分:0)

调用它(如果存在):

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>

答案 1 :(得分:0)

好收获。这应该通过用户培训来解决。否则,我们必须通过捕获并完成preventDefault事件的onSave,检查属性isDirty,然后检查fireOnchange,然后显式保存事件触发器来进行规避。

正如documentation所说的那样,onChange必须失去焦点才能触发:

  

在以下情况下会发生OnChange事件:
      •表单字段中的数据已更改,并且焦点丢失。

答案 2 :(得分:0)

我错了,onChange确实开火了。