JavaScript 无法读取 属性 'preventDefault' 的 null

JavaScript Cannot read property 'preventDefault' of null

我正在检查我的 CRM 表单中的 phoneNumber.length。到目前为止,我得到了 8-15 个字符之间的支票 = 可接受的工作。当我尝试堆叠 'if' 来检查零字符时,我得到: TypeError: 无法在 checkPhoneNumber

处读取 属性 'preventDefault' 的 null
function checkPhoneNumber(executioncontext) {
    var phoneNumber;
    phoneNumber = Xrm.Page.getAttribute("telephone1").getValue();

    if (phoneNumber == null) {
        Xrm.Page.ui.setFormNotification("Phonenumber can't be empty", "WARNING", "telephone1nc1");
        Xrm.Page.getControl("telephone1").setFocus(true);
        executioncontext.getEventArgs().preventDefault();
    } else {
        Xrm.Page.ui.clearFormNotification("telephone1nc1");
        //Insert 8-15 characters
        if (phoneNumber != null) {

            if (phoneNumber.length < 8 || phoneNumber.length > 15) {
                Xrm.Page.ui.setFormNotification("Phonenumber must be between 8-15 chars..", "ERROR", "telephoneerror1");
                Xrm.Page.getControl("telephone1").setFocus(true);
            } else {
                if (phoneNumber == null) {
                    Xrm.Page.ui.setFormNotification("Telefonnummret får inte vara tomt", "WARNING", "telephone1nc1");
                    Xrm.Page.getControl("telephone1").setFocus(true);
                    //executioncontext.getEventArgs().preventDefault(); //vid 0 bombar scriptet
                } else {

                    Xrm.Page.ui.clearFormNotification("telephone1nc1");
                }
                Xrm.Page.ui.clearFormNotification("telephoneerror1");

            }
            /*var regex = /^\+(?:[0-9] ?){6,14}[0-9]$/;

            if (regex.test(executionObj)) {
                // Valid international phone number
            } else {
                // Invalid international phone number */
        }
    }
}

整理好之后,我将开始编写代码以检查国际格式并根据实体的国家/地区插入国家/地区代码。因此评论 var regex.

executionContext.getEventArgs() for Dynamics CRM 仅与 save-events:

相关

This method returns null for any event other than the Save event.

看来您的代码不是(仅)运行 OnSave。

话虽如此,强制用户填写 Dynamics CRM 中的字段的正常方法是将它们设置为业务必填(即字段带有红色星号,用户不填写字段就无法保存表单)- 不是手动制作表单通知。

您需要确保 executioncontext.getEventArgs() 不为空。

在一行中执行此操作的最简单方法:

executioncontext.getEventArgs() && executioncontext.getEventArgs().preventDefault();