jQuery Validate, необходимо запретить бесплатные адреса электронной почты (например, Gmail, Hotmail) - PullRequest
3 голосов
/ 15 января 2012

Мне нужно добавить пользовательское правило проверки (или набор правил), чтобы запретить регистрацию всего списка адресов электронной почты.Это уже работает на стороне сервера, но мы хотим, чтобы интерфейс также имитировал это.

У меня большой массив из 40 или 50 бесплатных учетных записей электронной почты (например, Gmail, Hotmail, Live mail и т. Д.), И мне необходимо иметь любые адреса электронной почты, использующие одно из оснований из списка, для подтверждения FALSE.

Как мне это сделать?

Ответы [ 3 ]

4 голосов
/ 15 января 2012

Если у вас уже есть запущенный сервер, просто сделайте запрос AJAX обратно на сервер, чтобы использовать ту же логику проверки. (Ваш клиентский код отправит XMLHttpRequest обратно на сервер, логика проверки сервера будет запущена и вернет статус клиенту - и все это без перезагрузки HTML-страницы. Вы уже указали, что используете jQuery, поэтому это должно быть легко.)

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

1 голос
/ 15 января 2012

Используйте свой серверный массив для генерации массива jQuery, содержащего те же значения, а затем используйте метод jinuery .inArray () для его поиска. http://api.jquery.com/jQuery.inArray/

Например:

$('#submit_button').click(function(event){
  var emailAddress = $('#email').val();
  var emailDomain = emailAddress.substr(emailAddress.search('@') + 1)

  if (jQuery.inArray(emailDomain, invalidAddresses))
  {
    alert("Invalid Email Address");
    event.preventDefault();
  }
});
0 голосов
/ 15 января 2012

Почему вы не создаете массив без всех электронных писем, которые вам не нужны.

Например.

var email = new Array('Hotmail','Gmail','Yahoo',...,'Live');

как у вас уже есть весь список адресов электронной почты, создайте массивили файл json, xml, txt, ... и т. д.

Далее.Сделайте функцию-обработчик с регулярным выражением.

$(function()

//  $('selector').event(function(){ 

function handdlerMail(email){
           for(var i = 0; i<email.length; i++){
                 if(evalEmail(current_value,/^email[i]/g){
                       // do something
                        } else  {  // do something } 
            } // end for
} // End function 

function evalEmail(a,b) {
      if ((b.test(a))) {
            return true;
       } else {
            return false;
    }
}

}) // end of event

}) // enf of function

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

тогда вы могли бы оценивать ваши электронные письма в логарифмическом времени.и в конце ходьбы от дерева весов, вы можете решить, будет ли он в вашем списке aceepted.

т.е. есть ли он в дереве

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...