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

问题描述 投票:0回答:2

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

  1. 字段是使用onChange处理程序注册的。
  2. 用户更改此字段,并且:
  3. 用户立即点击保存。也就是说,在单击“保存”按钮之前,用户既不按Enter键也不单击表单上的某处以明确失去焦点。

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

如何以受支持的方式解雇未击中的onChange处理程序?

javascript dynamics-crm dynamics-crm-2015
2个回答
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>

0
投票

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

正如documentation所说,焦点必须失去onChange触发:

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

© www.soinside.com 2019 - 2024. All rights reserved.