Функция на определенное событие

Есть функция проверки валидности email:

function CheckCommunications(Dataset) {
   var Result = false;
   var emailRegEx = new RegExp("^[_\.0-9a-zA-Z-]+@([0-9a-zA-Z][0-9a-zA-Z-]+\.)+[a-zA-Z]{2,6}$");
       if ((Dataset('Communication1TypeID') == '{7A628D16-D7D0-4979-B8BA-B64EF54A0366}') && !IsEmptyValue(Dataset('Communication1'))) {
           var emailStr=Dataset.Values('Communication1');
           Result = emailRegEx.test(emailStr);
        }
      if (!Result) {
      ShowErrorDialog('Проверьте правильность заполнения поля email!');
      return;
      }
     
}

Подскажите на каком событии её корректно вызывать перед записью в базу?
Пробовал на btnOKOnClick
function btnOKOnClick(Control) {
        if (!CheckAccountData()) {
            return;
        }
        scr_BaseDBEdit.btnOKOnClick(Control);

    var Dataset = dlData.Dataset;               // Validation email
    Dataset.Close();
    Dataset.Open();
        CheckCommunications(Dataset);  
        //Dataset.Close();                            //&

}
, но отрабатывает некорректно - проверять проверяет, но пишет в базу не валидный email.

Нравится

1 комментарий

Здравствуйте.

Данные то сохраняются раньше на строке

scr_BaseDBEdit.btnOKOnClick(Control);

Поэтому просто переделайте обе функции:

function btnOKOnClick(Control) { 
        if (!CheckAccountData()) {
            return;
        }
        if(!CheckCommunications(dlData.Dataset)) {
            return;
        }
        scr_BaseDBEdit.btnOKOnClick(Control);
}
 
function CheckCommunications(Dataset) {
   var Result = false;
   var emailRegEx = new RegExp("^[_\.0-9a-zA-Z-]+@([0-9a-zA-Z][0-9a-zA-Z-]+\.)+[a-zA-Z]{2,6}$"); 
       if ((Dataset('Communication1TypeID') == '{7A628D16-D7D0-4979-B8BA-B64EF54A0366}') && !IsEmptyValue(Dataset('Communication1'))) {
           var emailStr=Dataset.Values('Communication1');
           Result = emailRegEx.test(emailStr);
        } 
      if (!Result) {
      ShowErrorDialog('Проверьте правильность заполнения поля email!');      
      }
      return Result;      
}
Показать все комментарии