2015-12-08 1 views
1

Я пишу javascript для CRM 2013, который запускается при изменении текстового поля. Требование:CRM Javascript для проверки недействительного формата электронной почты и ввода только одного адреса электронной почты

  1. Проверьте, когда введенный адрес недействителен. Оповестить всплывающее сообщение .
  2. Проверьте, есть ли более одного адреса электронной почты и появляется предупреждение . В этом поле разрешен только один адрес электронной почты.

Это мой код. Сначала я использовал разделитель, чтобы проверить список ввода адреса электронной почты, и он работает. Теперь я удалил разделитель для требования №2, и он больше не работает. Нужно ли менять регулярное выражение только для одного адреса электронной почты?

function EmailTest(EmailField) { 
    var Email = /^([a-zA-Z0-9_.-])[email protected]([a-zA-Z0-9_.-])+\.([a-zA-Z])+([a-zA-Z])+/; 
    if (Email.test(EmailField)) { 
    return true; 
    } else { 
    return false; 
    } 
} 

function CheckEmailString(context) { 
    try { 
    //getting the input 
    var EmailString = context.getEventSource().getValue(); 
    if (EmailString != null) { 
     var Flag = true; 

     if (!EmailTest(EmailString)) { 
     Flag = false; 
     } 
     //} 
     if (Flag != true) { 
     alert("Please check if the email might contain invalid format. Note that only one email address is allowed for this."); 
     //prevents users from saving the form if not valid 
     //context.getEventArgs().preventDefault(); 
     //Xrm.Page.context.getEventArgs.preventDefault(); 
     } 
    } 
    } catch (err) { 
    alert(err.message); 
    } 
} 
+0

В каком поле вы проверяете? Можете ли вы начать с проверки пробелов или двух символов «@» или чего-то еще? –

ответ

1

Регулярное выражение вы используете будет проверить, верно, пока текстовое поле начинается с действительным адресом электронной почты (т.е. [email protected]) - вам нужно включить строку конца- характер $ в конце выражения, чтобы проверить, что ничего не следует матч:

/^([a-zA-Z0-9_.-])[email protected]([a-zA-Z0-9_.-])+\.([a-zA-Z])+([a-zA-Z])+$/;

в дополнение к этому, регулярное выражение можно было бы сделать немного больше мяса. Я хотел бы предложить следующее изменение, чтобы достичь тех же результатов оценки:

/^[a-zA-Z0-9_.-][email protected][a-zA-Z0-9_.-]+\.[a-zA-Z]{2,}$/;

Еще одно предложение заключается в том, что вы обрезать текст в EmailField, прежде чем запустить его через выражение, как пробелы или другие пробельные символы в начале или конец поля приведет к сбою теста.

+0

Спасибо! Новое регулярное выражение сделало трюк. CRM автоматически убирает пробелы в текстовом поле, поэтому нет необходимости в дополнительной обрезке. Большое спасибо. – ichachan