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);
}