onChange() 从无效的字段调用 save()

重现步骤(Turbo Forms,CRM 2015.1, - > CRM 2016.2)

  1. 表单(包含或不包含其他必填字段)有一个空白且必填的字段。
  2. 丢失焦点在空字段(本例中为标题),这会触发字段通知图标: http://i.stack.imgur.com/KbSOE.jpg
  3. 连接 onChange Handler 为空字段调用 save:
function forceSaveOnChangeOfTitle(){
    Xrm.Page.data.save().then(
        function () {}, 
        function (error, message) {console.error("Error: " + error + " Message: " + message);}
    );
}
  1. 在空字段中输入值。

结果:

  • 保存失败。调用失败回调,错误号为 null,消息为未定义
  • 字段通知消失,但右下方仍显示所需的消息: http://i.stack.imgur.com/KxblB.jpg

已知的解决方法:

将属性的值设置为自身:

function forceSaveOnChangeOfTitle(){
    var title = Xrm.Page.getAttribute("title");
    title.setValue(title.getValue());
    Xrm.Page.data.save().then(
        function () {}, 
        function (error, message) {console.error("Error: " + error + " Message: " + message);}
    );
}

使用 1ms 超时:

function forceSaveOnChangeOfTitle(){
    setTimeout(function() {
        Xrm.Page.data.save().then(
            function () {}, 
            function (error, message) {console.error("Error: " + error + " Message: " + message);}
        );
    }, 1);
}