2013-09-24 3 views
1

Я пытаюсь использовать jQuery, чтобы узнать, ввел ли пользователь правильный адрес электронной почты в текстовое поле. В принципе, я хочу, чтобы кнопка отправки оставалась отключенной по умолчанию, но на каждой клавиатуре я хочу проверить, действительно ли адрес электронной почты действителен, а затем я хочу включить кнопку. Если пользователь вводит действительный адрес электронной почты, но затем удаляет части, чтобы он снова стал недействительным (т. Е. Символ @), я хочу, чтобы кнопка отправки снова отключилась.Проверить действительную электронную почту с помощью jQuery

У меня здесь частично работает скрипт. Мой чек или символ @ работает хорошо, но я с трудом проверяю файлы .com, .co, .net, .org, .edu и т. Д. По какой-то причине кнопка сохраняет возможность, даже если я не ввел действительное «окончание» по электронной почте.

Например, «emailco @» распознается как действительное электронное письмо. Вот мой сценарий:

<script> 
$(document).ready(function() { 

    $('#email').bind('keyup', function(e) { 

     var email = document.getElementById("email"); 

     if (email.value.search("@") != -1) { 

      if (
      (email.value.search(".com") != -1)|| 
      (email.value.search(".co") != -1)|| 
      (email.value.search(".org") != -1)|| 
      (email.value.search(".net") != -1)|| 
      (email.value.search(".gov") != -1)|| 
      (email.value.search(".biz") != -1)|| 
      (email.value.search(".me") != -1)|| 
      (email.value.search(".edu") != -1)) { 

      document.getElementById("email_go").disabled = false; 
     } 

     else { 
      document.getElementById("email_go").disabled = true; 
     } 
     } 

     else { 
      document.getElementById("email_go").disabled = true; 
     } 
    }); 
}); 
</script> 
+0

Google регулярного выражения электронной почты проверку –

+0

Просто несвязанная намек: 'документа .getElementById ("email_go") 'может стать' $ ('# email_go') 'и' document.getElementById («email») 'может стать' $ (this) ' – andy

+0

@andy' document.getElementById ("email_go") '! =' $ ('# email_go') ' – George

ответ

1

Просто используйте регулярное выражение:

if (email.value.search("@") != -1) { 

    if (/(.+)@(.+)\.(com|edu|org|etc)$/.test(email.value)) 
} 
1
var email = $('#email').val(); 
    var pattern = ".+\\@@.+\\..+"; 
     var valid = email.match(pattern); 
     if (valid == null) { 
      alert("Not Valid"); 
      return; 
     } 
    else{ 
      alert("Valid"); 
      return; 
    } 
1

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

// Split the email to see if there's an "@" character 
    var split = email.split('@'); 
    var split_count = split.length; 

// If there is, then split the second string by a "." 
    if (split_count == 2) { 
     var domain = split[1].split('.'); 
     var domain_count = domain.length; 

     if (domain_count == 2) { 
//   Store all of the accepted values for email endings 
      var endings = ['org', 'com', 'net', 'edu', 'info', 'biz', 'me']; 
      var result = $.inArray(domain[1], endings); 

//   If the final 3 chars of the string are in the array, then proceed 
      if (result > 0) { 

      } 
     } 
    } 
+0

Вы серьезно хотите сохранить все доступные TLD вручную? Как насчет '.pl',' .gda.pl', '.fr',' .nz', '.xxx',' .is', '.co.uk'? Бесполезно записывать их вручную, приятель. – Mark

+0

Правда. В настоящее время это отчасти устарело. Я уверен, что вы можете найти список всех приемлемых TLD и сохранить их в массиве, хотя – Lance

+1

Есть список: http://mxr.mozilla.org/mozilla-central/source/netwerk/dns/effective_tld_names.dat? raw = 1 и http://data.iana.org/TLD/tlds-alpha-by-domain.txt. Но даже это не на 100% точнее, и есть слишком много результатов для проверки. Регулярное выражение IMHO - лучший вариант (он предлагает скорость, и если появится новый TLD или домен 2-го/3-го уровня, вы его поддержите). – Mark

1

Я использую этот код Regex для тестирования формата электронной почты с помощью JQuery:

var email = $('.email').val(); 
    if(email.match(/^\[email protected][a-zA-Z_]+?\.[a-zA-Z]{2,3}$/)) 
    { 
     alert('OK'); 
    } 
Смежные вопросы