单击“保存并关闭”按钮后,调用preventDefault时,OnSave事件将触发两次

时间:2018-07-29 15:27:16

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

我的表单上有以下onSave处理程序:

onSave: function (executionContext) {
    var eventArgs = executionContext.getEventArgs();
    var isValid = validate();
    if (!isValid) {
        eventArgs.preventDefault();
        return false;
    }
},

令我惊讶的是,如果调用onSave,则两次调用preventDefault(),但是只有在单击“保存并关闭”按钮时才会发生(单击“保存”按钮时不会发生这种情况) 。

请注意,您也可以使用以下代码来重现该问题:

onSave: function (executionContext) {
    var eventArgs = executionContext.getEventArgs();
    eventArgs.preventDefault();
},

我想知道这是否是一个已知问题,如果可以,那么您将采用什么方法来解决这个问题?

1 个答案:

答案 0 :(得分:0)

您可能已打开自动保存功能(系统设置-在所有表单上启用自动保存功能)。对于自动保存,在单击“保存”时以及在从窗体中关闭/导航时都将完成保存。因此,这基本上是设计使然-触发一个事件是因为您单击了“保存”,而第二个事件是因为您还关闭了表单(这基本上就是“保存并关闭”的作用)。

您可以使用以下方法检查此设置是否自动保存:

var eventArgs = econtext.getEventArgs();
if (eventArgs.getSaveMode() == 70 || eventArgs.getSaveMode() == 2) {
   //here you know you are in auto-save
}