设置字段级通知后,Dynamics 365 自定义 javascript 不会执行保存

问题描述

当字段中的数据无效时,我设置了字段级通知。然后我将数据更改为有效但因为我设置了 onSave 通知不会被触发。

function ValidateFields(executionContext) {

console.log("Init");

var formContext = executionContext.getFormContext();

var bfenummer_value =  formContext.getAttribute("kk_ejerlav").getValue();
var bfenummer_control = formContext.getControl("kk_ejerlav");
var bfenummer_uniqueid = "bfenummer";

if(!isNumeric(bfenummer_value))
{
    bfenummer_control.setNotification("Angiv et tal mellem -2147483648 og 2147483647",bfenummer_uniqueid);
    console.log("Set " + isNumeric(bfenummer_value));

    // setTimeout(function () {
    //     bfenummer_control.clearNotification(bfenummer_uniqueid);            
    //     console.log("Clear " + isNumeric(bfenummer_value));
    // },1000);
}
else {
    bfenummer_control.clearNotification(bfenummer_uniqueid);            
    console.log("Clear " + isNumeric(bfenummer_value));
}

}

function isNumeric(value) {
  return /^-?\d+$/.test(value);
}

解决方法

您需要在 OnChange 事件上为“kk_ejerlav”字段运行一个函数。
像这样:

function ejerlavChanged(executionContext){
    var formContext = executionContext.getFormContext();

    var bfenummer_value =  formContext.getAttribute("kk_ejerlav").getValue();
    var bfenummer_control = formContext.getControl("kk_ejerlav");
    var bfenummer_uniqueid = "bfenummer";

    if(isNumeric(bfenummer_value)){
        bfenummer_control.clearNotification(bfenummer_uniqueid);            
        console.log("Clear " + isNumeric(bfenummer_value));
    }
}

function isNumeric(value) {
  return /^-?\d+$/.test(value);
}

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...