2017-01-25 5 views
-1

Я проверяю номер телефонаNumber.length в форме CRM. До сих пор я получил чек между 8-15 символами = приемлемый для работы. Когда я пытаюсь сложить «если» для проверки нулевых символов я получаю: TypeError: Не удается прочитать свойство «preventDefault» в нуль на checkPhoneNumberJavaScript Невозможно прочитать свойство «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.

+0

'executioncontext.getEventArgs()' возвращает нуль, что вызывает вашу ошибку. Что касается этого, нам понадобится больше контекста для переменной 'executecontext'. – Antony

+0

А, да. Он должен очистить предупреждающее сообщение «Xrm.Page.ui.setFormNotification (« Telefonnummret får inte vara tomt »,« WARNING »,« phone1nc1 »);' Как только значение вводится в телефоне1. – Paladin

ответ

2

Вы должны убедиться, что executioncontext.getEventArgs() не имеет значения.

Самый простой способ сделать это в одной строке:

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

Это, несомненно, решило мою проблему. – Paladin

0

executionContext.getEventArgs() для Dynamics CRM имеет значение только для сохранения-событий:

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

Казалось бы, что ваш код не является (только) работает OnSave.

С учетом этого нормальный способ заставить пользователей заполнять поля в Dynamics CRM - это сделать их бизнес-обязательными (т.е. поля получают красные звездочки, и пользователи не могут сохранить форму без заполнения полей) - не вручную создавать уведомления о форме.