2015-01-16 3 views
0

Вот мой вопрос: Я пытаюсь проверить электронную почту в текстовом поле с осиной: RegularExpressionValidator, Смотрите ниже:Проверка адрес электронной почты в JavaScript

<telerik:RadTextBox ID="AlertMissedEmail" Width="300" runat="server" Label="" MaxLength="500" TextMode="MultiLine"></telerik:RadTextBox> 
       <asp:RegularExpressionValidator runat="server" ID="revEmail" ControlToValidate="AlertMissedEmail" 
           Display="None" ValidationExpression="^([\w+-.%][email protected][\w-.]+\.[A-Za-z]{2,4},?)+$" 
           ValidationGroup="validationTourProperties" EnableClientScript="false" 
           ErrorMessage="- Please enter a valid email address:(ex.) <b>[email protected]</b>" /> 

Это прекрасно работает, если его один адрес электронной почты, но я хотите, чтобы пользователь добавил несколько писем, которые могут быть разделены точкой с запятой

Я хочу сначала проверить это в JS, так что если пользователь вставил пробел или что-то еще вместо точки с запятой, пользователь получит предупреждение с правильным форматом как он должен быть вставлен, чтобы он мог исправить электронные письма.

Пожалуйста, помогите мне исправить мой JS код:

function formCheck(sender,args) 
{ 
     //Getting the Email field value & text. 
     var l_Email = $find("<%=AlertMissedEmail.ClientID %>").get_value(); 
     var l_EmailText = $find("<%=AlertMissedEmail.ClientID %>").get_textBoxValue(); 
     //Setting up the Reg expression for email. 
     var reg = /^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/; 

     // 3). Check for reg expression of the email field. 
     if (l_EmailText == "") { // text is empty email is not must. 
      retValEmail = true; 
     } 

     if (l_EmailText != "") { // email is not empty check for reg 
      if (reg.test(l_Email)) { 
       retValEmail = true; 
      } 
      else { 
       alert("Please enter a valid email address"); 
       retValEmail = false; 
      } 
     } 
} 

ответ

0

Я модифицировал вас немного. Это не проверено. Надеется, что это помогает ...

function formCheck(sender,args) 
    { 
      //Getting the Email field value & text. 
      var l_Email = $find("<%=AlertMissedEmail.ClientID %>").get_value(); 
      var l_EmailText = $find("<%=AlertMissedEmail.ClientID %>").get_textBoxValue(); 
      //Setting up the Reg expression for email. 
      var reg = /^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/; 
      var hasInvalidMail = false; 

      if (l_EmailText.length < 7) { // valid email to have 7 chars at least 
       return false; 
      } 

      //split emails if there is ; 
      var emails = []; 
      if(l_EmailText.indexOf(';') >= 0) 
      { 
       emails = l_EmailText.split(';'); 
      } 
      else 
      { 
       emails[0] = l_EmailText; 
      } 

      //loop all emails 
      for(var i=0; i<emails.length;i++) 
      { 
       if (!reg.test(l_Email)) { 
        //stop checking if we find error 
        hasInvalidMail = true; 
        break; 
       } 
      } 
      return hasInvalidMail;    
    } 

Вы можете сделать некоторое повышение возвращать только действительные электронные письма

+0

Вашего код почти работает мне нужно идентичность, если пользователь поставил запятую или любой другой символ вместо запятой между 2 электронной почты или более, и заменить его точкой с запятой. Функция Split ничего не делает. –

+0

Вы также можете отфильтровать недействительные электронные письма и просто сохранить действующие. В принципе, вы нажимаете все действительные электронные письма на массив в цикле и возвращаете его. Я обработаю все электронные письма, а затем уведомит пользователя. – kheya

0

Я предполагаю, что большая часть кода вы вывесили работы. Я думаю, вам просто нужно проверить что-то вроде функции split(). Как только вы получите l_EmailText вы могли бы назвать:

var emails = l_EmailText.split(";"); 

разбить каждый из писем, а затем итерация:

for (var i = 0; i < emails.length; i++) { 
    // individual email check code goes here 
} 

, чтобы проверить электронную почту каждый по отдельности. Ваше выражение в выражении /^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/; работает только для одного электронного письма.

Смежные вопросы