Проверьте действующий адрес электронной почты перед запуском оставшегося JavaScript - PullRequest
8 голосов
/ 30 июня 2011

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

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

Приведенный ниже код отлично работает для отображения графика загрузки, но он не проверяет, является ли адрес электронной почты действительным в первую очередь.Кто-нибудь может помочь?

$('#btnEmail1Submit').live ("click", function() {
   $('<div class="submitBg"></div>').appendTo(".emailEditContainer");
   $('<div class="submitLoadingCont"><img class="submitLoading" src="images/mypreferences/loading.gif" width="50" height="50" /></div>').appendTo(".emailEditContainer");
});

Я думаю, что мне нужно поместить оператор if вокруг функции, которая запускается при нажатии - так что-то вроде:

$('#btnEmail1Submit').live ("click", function() {
  if(emailvalid == true) {   
    $('<div class="submitBg"></div>').appendTo(".emailEditContainer");
    $('<div class="submitLoadingCont"><img class="submitLoading" src="images/mypreferences/loading.gif" width="50" height="50" /></div>').appendTo(".emailEditContainer");
  }
});

Я используюПроверка электронной почты asp.net - это выглядит примерно так:

<asp:RegularExpressionValidator Display="Dynamic" ValidationGroup="PrimarySubmit" ID="RegularExpressionValidator1" runat="server" ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*" ControlToValidate="tbEmail1" ErrorMessage="Invalid email address - " />

Ответы [ 5 ]

14 голосов
/ 30 июня 2011

Вам понадобится регулярное выражение для проверки правильности адреса электронной почты:

function isValidEmailAddress(emailAddress) {
    var pattern = new RegExp(/^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i);
    return pattern.test(emailAddress);
};

Это пришло из этого вопроса , поэтому смотрите эту ветку для получения дополнительной информации.

Вам нужно вызвать эту функцию с адресом электронной почты, предоставленным пользователем, поэтому я предполагаю что-то вроде:

var email = $("#emailInput").val();
if(isValidEmailAddress(email)) {
    //Do stuff
}
7 голосов
/ 30 июня 2011

Вы должны проверить действительность электронной почты с помощью регулярного выражения

var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/

$('#btnEmail1Submit').live ("click", function() {
   if(!email.match(re)) {
     alert('invalid email');
     return false;
   }
   $('<div class="submitBg"></div>').appendTo(".emailEditContainer");
   $('<div class="submitLoadingCont"><img class="submitLoading" src="images/mypreferences/loading.gif" width="50" height="50" />    </div>').appendTo(".emailEditContainer");
});

Регулярное выражение взято с Проверить адрес электронной почты в JavaScript?

3 голосов
/ 30 июня 2011

Проверка электронной почты обсуждалась много, много раз на SO и в других местах . Короче говоря, это трудно (невозможно) сделать идеально, и это компромисс между максимальным охватом допустимых форматов и минимизацией ложных срабатываний. На самом деле все, что я делаю для проверки адресов электронной почты - это базовая проверка работоспособности. В псевдокоде:

if (address.contains("@")) { 
   .. // then ok
} 

Все остальное в принципе бесполезно. Даже если вы потратили целую вечность на создание какого-то безумно сложного регулярного выражения для соответствия RFC822 , чтобы получить большинство действительных адресов (есть реальные адреса, которые не соответствуют RFC) - откуда вы знаете этот почтовый ящик действительно существует?

0 голосов
/ 30 июня 2011

Если вам нужно выполнить валидатор aps для проверки адреса электронной почты, который, кажется, имеет отношение к вашему вопросу, то вам нужно вызвать сгенерированный javascript, который делает это, прежде чем сделать вызов - так что звоните:

если (Page_ClientValidate)

делай другие вещи

Однако при этом будет выполняться вся проверка страницы, а не только электронная почта.

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

См. CodeProject

0 голосов
/ 30 июня 2011

Вы можете проверить это

function myClick() {
    Page_ClientValidate();
    if (Page_IsValid) {
        return true;
    }
    else {
        return false;
    }
}

если вы используете валидатор regularexpression, то это можно использовать ....

...